Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与foreman一起更改ruby版本_Ruby_Rvm_Foreman - Fatal编程技术网

与foreman一起更改ruby版本

与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

我需要使用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 | 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