我使用Thin来为位于测试机器上的rails应用程序提供服务。我希望能够从我的本地计算机停止/启动瘦,但以下操作不起作用:
ssh luc@test_machine '/home/luc/.rvm/gems/ruby-1.9.3-p125/bin/thin -v'
我收到以下错误消息:
/home/luc/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find thin (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)
from /home/luc/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /home/luc/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems.rb:1230:in `gem'
from /home/luc/.rvm/gems/ruby-1.9.3-p125/bin/thin:18:in `<main>'
为什么我得分时只列出6颗宝石?
当我在ssh中连接到测试服务器时:
which thin
给了我正确的道路:
/home/luc/.rvm/gems/ruby-1.9.3-p125/bin/thin (question updated with correct path)
更新
我在服务器上创建了一个基本的test.sh脚本:
#!/bin/bash
# Update path with ruby / gem
export PATH=$PATH:/home/luc/.rvm/rubies/ruby-1.9.3-p125/bin:/home/luc/.rvm/gems/ruby-1.9.3-p125/bin/
thin -v
exit 0
我从本地机器上调用它
ssh luc@test_machine '/home/luc/test.sh'
但仍然是相同的“找不到薄”的错误。
更新2
这可能与脚本通过ssh运行时使用的rubies / gemset相关联。我添加了
rvm list
rvm gemset list
test.sh文件中的和我的输出是:
rvm rubies
* ruby-1.9.3-p125 [ x86_64 ]
# => - current
# =* - current && default
# * - default
gemsets for system (found in /home/luc/.rvm/gems/system)
*
似乎我安装的宝石不在那里......不知道为了通过ssh调用来使用rubies / gemset版本。
答案 0 :(得分:0)
你使用bundler吗?
尝试
bundle exec thin -v
如果这不起作用或您不使用bundler,请键入
检查$PATH
变量
echo PATH
如果宝石不在路径中他将无法加载它,我敢打赌它是路径:) 更新他们和摇滚乐
在最坏的情况下,您将不得不生成rvm gem包装器,有关详细信息,请阅读
http://beginrescueend.com/integration/god/
干杯!
答案 1 :(得分:0)
我用另一种方式管理了这个。我没有尝试从远程计算机重新启动服务器,而是安装了gem“rerun”(https://github.com/alexch/rerun),以便在更改某些代码时自动重启瘦服务器。
rerun -- thin start
诀窍真的很好
答案 2 :(得分:0)
这个解决方案对我有用(远程和卡皮斯特拉诺!)
看看这个answer!
只是放置:
source "/usr/local/rvm/scripts/rvm" # or ~/.rvm/..
rvm use 1.9.3
>在/etc/init.d/thin
或对于capistrano
%w[start stop restart].each do |command|
desc "#{command} thin server"
task command, roles: :app do
run "source '/usr/local/rvm/scripts/rvm' && rvm use 1.9.3 && service thin #{command}"
end
after "deploy:#{command}", "thin:#{command}"
end
如果您将每个用户的rvm更改源路径安装到'〜/ .rvm / scripts / rvm'