我正在尝试让一个 Rails 应用程序与新贵一起部署。作为其中的一部分,我使用的是 rbenv ruby(ruby 1.9.3p392,如果有关系的话)。
通过一长串的调试,我将事情归结为我认为的最小测试用例。这个脚本:
require 'readline'
当我从命令行运行它时可以工作,但是当我通过暴发户使用如下节启动它时:
script
env > /tmp/upstart.env
gem environment > /tmp/gem.env
/home/topshelf-deploy/.rbenv/shims/ruby bundle_test.rb > /tmp/bt.log 2>&1
end script
我的日志文件包含:
/home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/rb-readline-0.4.2/lib/rbreadline.rb:1091:in `<module:RbReadline>': undefined method `+' for nil:NilClass (NoMethodError)
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/rb-readline-0.4.2/lib/rbreadline.rb:13:in `<top (required)>'
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/rb-readline-0.4.2/lib/readline.rb:8:in `<module:Readline>'
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/rb-readline-0.4.2/lib/readline.rb:6:in `<top (required)>'
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
from /home/topshelf-deploy/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
from bundle_test.rb:1:in `<main>'
我的 gem 环境似乎是相同的,具体取决于我是通过新贵还是交互式 shell 运行(同样,这工作正常)。我已将 PATH 设置为指向我的 rbenv ruby。
关于如何使它工作的任何建议?我的谷歌搜索没有发现任何类似的东西。我很困惑。