Sha256: 6967fbe8580d10e1ab09df2b2e65e6195ee21474e7b5a1a6ecc9b610a52048b1

Contents?: true

Size: 1.63 KB

Versions: 6

Compression:

Stored size: 1.63 KB

Contents

module Vx
  class Router
    class ScriptBuilder

      Ruby = Struct.new(:app) do

        ALIASES = {
          '1.8.7' => "system"
        }

        include Helper::TraceShCommand

        def call(env)
          if rvm env
            env.cache_key << "rvm-#{rvm env}"

            env.before_install.tap do |i|
              i << 'eval "$(rbenv init -)" || true'
              i << "rbenv shell #{make_rbenv_version_command env}"
              i << 'export BUNDLE_GEMFILE=${PWD}/Gemfile'
              i << 'export GEM_HOME=$HOME/cached/rubygems'
            end

            env.announce.tap do |a|
              a << trace_sh_command("ruby --version")
              a << trace_sh_command("gem --version")
              a << trace_sh_command("bundle --version")
            end

            env.install.tap do |i|
              i << trace_sh_command("bundle install")
              i << trace_sh_command("bundle clean --force")
            end
          end

          app.call(env)
        end

        private

          def rvm(env)
            env.configuration.rvm.first
          end

          def make_rbenv_version_command(env)
            select_rbenv_version_by_aliases(env) ||
              select_rbenv_version(env)
          end

          def select_rbenv_version_by_aliases(env)
            ALIASES[rvm(env)]
          end

          def select_rbenv_version(env)
            %{
              $(rbenv versions |
                sed -e 's/^\*/ /' |
                awk '{print $1}' |
                grep -v 'system' |
                grep '#{rvm env}' |
                tail -n1)
            }.compact
          end

      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
vx-router-0.2.0.pre33 lib/vx/router/script_builder/ruby.rb
vx-router-0.2.0.pre32 lib/vx/router/script_builder/ruby.rb
vx-router-0.2.0.pre31 lib/vx/router/script_builder/ruby.rb
vx-router-0.2.0.pre30 lib/vx/router/script_builder/ruby.rb
vx-router-0.2.0.pre29 lib/vx/router/script_builder/ruby.rb
vx-router-0.2.0.pre28 lib/vx/router/script_builder/ruby.rb