Class: Engineyard::Local::Middleware::Rails::Install

Inherits:
Object
  • Object
show all
Includes:
Helpers::Executable, Helpers::Rvm
Defined in:
lib/engineyard-local/middleware/rails/install.rb

Instance Method Summary collapse

Methods included from Helpers::Executable

#project_dir, #ssh_exec, #ssh_exec!

Methods included from Helpers::Rvm

#bash_rvm_setup, #export_ruby, #ruby_env_const, #rvm_env, #use_ruby_with_gemset

Constructor Details

#initialize(app, env) ⇒ Install



9
10
11
# File 'lib/engineyard-local/middleware/rails/install.rb', line 9

def initialize(app, env)
  @app, @env = app, env
end

Instance Method Details

#call(env) ⇒ Object



13
14
15
16
# File 'lib/engineyard-local/middleware/rails/install.rb', line 13

def call(env)
  ssh_exec!(env, commands)
  @app.call(env)
end

#commandsObject



18
19
20
21
# File 'lib/engineyard-local/middleware/rails/install.rb', line 18

def commands
  rvm_env +
    [ unless_rails("gem install rails #{install_opts}") ]
end

#install_optsObject



23
24
25
26
27
# File 'lib/engineyard-local/middleware/rails/install.rb', line 23

def install_opts
  if @env["eylocal.rails.version"]
    "--version=#{@env["eylocal.rails.version"]}"
  end
end

#unless_rails(cmd) ⇒ Object



29
30
31
# File 'lib/engineyard-local/middleware/rails/install.rb', line 29

def unless_rails(cmd)
  "gem list rails | grep rails; if [[ $? -gt 0 ]]; then sudo #{cmd}; fi"
end