与foreman一起更改ruby版本
我需要使用foreman来运行多个Rails应用程序,这对于可以在foreman使用的相同Ruby版本上运行的Rails应用程序来说很好。但是,我有一个旧的Rails应用程序,它需要Ruby 1.8.6。我已经尝试了一些技巧,但没有成功:与foreman一起更改ruby版本,ruby,rvm,foreman,Ruby,Rvm,Foreman,我需要使用foreman来运行多个Rails应用程序,这对于可以在foreman使用的相同Ruby版本上运行的Rails应用程序来说很好。但是,我有一个旧的Rails应用程序,它需要Ruby 1.8.6。我已经尝试了一些技巧,但没有成功: old_web_app: /bin/bash --login -c "cd ../2.1 && rvm use 1.8.6 && script/server" 错误输出: 06:14:03 old_web_app.1 | st
old_web_app: /bin/bash --login -c "cd ../2.1 && rvm use 1.8.6 && script/server"
错误输出:
06:14:03 old_web_app.1 | started with pid 36499
06:14:03 old_web_app.1 | RVM is not a function, selecting rubies with 'rvm use ...' will not work.
06:14:03 old_web_app.1 |
06:14:03 old_web_app.1 | You need to change your terminal emulator preferences to allow login shell.
06:14:03 old_web_app.1 | Sometimes it is required to use `/bin/bash --login` as the command.
06:14:03 old_web_app.1 | Please visit https://rvm.io/integration/gnome-terminal/ for an example.
06:14:03 old_web_app.1 |
06:14:03 old_web_app.1 | script/server:2:in `require': cannot load such file -- script/../config/boot (LoadError)
06:14:03 old_web_app.1 | from script/server:2:in `<main>'
06:14:03 old_web_app.1 | exited with code 1
06:14:03 system | sending SIGTERM to all processes
但是,这也不起作用,并产生以下结果:
07:06:55 old_web_app.1 | started with pid 38387
07:06:56 old_web_app.1 | Using /Users/mwlang/.rvm/gems/ruby-1.8.6-p420
07:06:56 old_web_app.1 | /Users/mwlang/.rvm/gems/ruby-1.8.6-p420@global/gems/executable-hooks-1.3.2/lib/executable-hooks/regenerate_binstubs_command.rb:89: warning: parenthesize argument(s) for future version
07:06:56 old_web_app.1 | /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/rubygems_integration.rb:366: warning: parenthesize argument(s) for future version
07:06:56 old_web_app.1 | /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/settings.rb:159:in `[]': odd number of arguments for Hash (ArgumentError)
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/settings.rb:159:in `load_config'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/settings.rb:6:in `initialize'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:213:in `new'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:213:in `settings'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:398:in `configure_gem_home_and_path'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:90:in `configure'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:151:in `definition'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:116:in `setup'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/setup.rb:17
07:06:56 old_web_app.1 | exited with code 1
07:06:56 system | sending SIGTERM to all processes
单独在命令行上运行脚本是可行的,但在foreman中运行脚本则不行。foreman设计用于运行与单个应用程序相关的多个进程,而不是运行多个应用程序。每个应用程序都应该有一个单独的
Procfile
,在运行foreman之前切换到相应的ruby版本。这是一个权威性的答案吗?我有几个小应用程序可以一起工作,一起启动它们真的很好。在升级到另一个ruby版本后,我也遇到了这个问题
07:06:55 old_web_app.1 | started with pid 38387
07:06:56 old_web_app.1 | Using /Users/mwlang/.rvm/gems/ruby-1.8.6-p420
07:06:56 old_web_app.1 | /Users/mwlang/.rvm/gems/ruby-1.8.6-p420@global/gems/executable-hooks-1.3.2/lib/executable-hooks/regenerate_binstubs_command.rb:89: warning: parenthesize argument(s) for future version
07:06:56 old_web_app.1 | /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/rubygems_integration.rb:366: warning: parenthesize argument(s) for future version
07:06:56 old_web_app.1 | /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/settings.rb:159:in `[]': odd number of arguments for Hash (ArgumentError)
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/settings.rb:159:in `load_config'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/settings.rb:6:in `initialize'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:213:in `new'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:213:in `settings'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:398:in `configure_gem_home_and_path'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:90:in `configure'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:151:in `definition'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler.rb:116:in `setup'
07:06:56 old_web_app.1 | from /Users/mwlang/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/setup.rb:17
07:06:56 old_web_app.1 | exited with code 1
07:06:56 system | sending SIGTERM to all processes