class Vx::Builder::ScriptBuilderV2::Ruby

Constants

ALIASES
DEFAULT_RUBY

Public Instance Methods

call(env) click to toggle source
# File lib/vx/builder/script_builder_v2/ruby.rb, line 13
def call(env)
  if enabled?(env)

    do_cache_key(env) do |k|
      ruby_v = ruby_version(env)
      k << "rvm-#{ruby_v}"
      k << gemfile(env)
    end

    do_cached_directories(env) do |i|
      i << "~/.rubygems"
    end

    env.stage("init").tap do |i|
      if jruby?(env)
        i.add_env "JRUBY_OPTS", "\"-Xcext.enabled=true\""
      end
      i.add_env "RAILS_ENV", "test"
      i.add_env "RACK_ENV", "test"
      i.add_env "GEM_HOME", "~/.rubygems"
    end

    env.stage("install").tap do |i|
      i.add_task "ruby", "action" => "install", "ruby" => ruby_version(env)
      i.add_task "ruby", "announce"

      do_install(env) do
        i.add_env "BUNDLE_GEMFILE", "${PWD}/#{gemfile(env)}"
        if args = env.source.bundler_args.first
          i.add_task "ruby", "action" => "bundle:install", "bundler_args" => args
        else
          i.add_task "ruby", "bundle:install"
        end
      end
    end

    env.stage("database").tap do |i|
      do_database(env) do
        i.add_task "ruby", "rails:database"
      end
    end

    env.stage("script").tap do |i|
      do_script(env) do
        i.add_task "ruby", "script"
      end
    end

  end

  app.call(env)
end

Private Instance Methods

enabled?(env) click to toggle source
# File lib/vx/builder/script_builder_v2/ruby.rb, line 68
def enabled?(env)
  env.source.rvm.first || env.source.language == 'ruby'
end
gemfile(env) click to toggle source
# File lib/vx/builder/script_builder_v2/ruby.rb, line 81
def gemfile(env)
  env.source.gemfile.first || "Gemfile"
end
jruby?(env) click to toggle source
# File lib/vx/builder/script_builder_v2/ruby.rb, line 77
def jruby?(env)
  ruby_version(env) =~ /jruby/
end
ruby_version(env) click to toggle source
# File lib/vx/builder/script_builder_v2/ruby.rb, line 72
def ruby_version(env)
  v = env.source.rvm.first
  ALIASES[v] || v || DEFAULT_RUBY
end