我使用Ubuntu 12.04.4 TLS瞭解RubyGems的 '需要' 的須藤VS rvmsudo
我寫/home/abdo/sample_serv.sh
一個簡單的shell腳本執行一個Ruby文件:
#!/bin/bash
/home/abdo/.rvm/rubies/ruby-2.1.0/bin/ruby /home/abdo/sample_serv.rb
和/home/abdo/sample_serv.rb
含下面的代碼:
puts $:
require 'sinatra'
set :port, 8084
get '/' do
%{ <html><body>Hello from Abdo</body></html> }
end
執行rvmsudo ./home/abdo/sample_serv.sh
工作得很好,但我想獲得sudo ./home/abdo/sample_serv.sh
通過將NE工作因爲我與upstart
有問題,因此需要使用環境因素。
產生的問題是在我的/etc/init/foo.conf
description "webserver test"
start on runlevel [23]
stop on shutdown
pre-start script
exec >> /var/log/unicorn_test.log 2>&1
echo starting
end script
script
exec >> /var/log/unicorn_test.log 2>&1
/bin/bash /home/abdo/.rvm/bin/rvmsudo /home/abdo/sample_serv.sh
echo started
end script
當達到行/bin/bash /home/abdo/.rvm/bin/rvmsudo /home/abdo/sample_serv.sh
,我得到
/home/abdo/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in
`require': cannot load such file -- sinatra (LoadError)
我能得到同樣的ruby -v
爲我的用戶,但它看起來像GEM_PATH
(即使我把它設置在upstart配置文件裏面)也沒有幫助。
基本上,如果我能夠了解如何(在哪裏 - gem env
是沒有幫助,因爲gem
不是命令,當我做sudo
)rubygems
查找被要求一個文件,我應該能夠繼續前進。
這是一個好的開始......我不想改變sudo嚴格的默認值。感謝您的回覆:-) – Abdo
添加了一些替代品 –
非常感謝以上信息。 +1現在,將接受我確認時:-) – Abdo