无法通过远程计算机重新启动瘦身

我使用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 `' 

为什么我得分时只列出6颗gem?

当我在ssh中连接到测试服务器时:

 which thin 

给了我正确的道路:

 /home/luc/.rvm/gems/ruby-1.9.3-p125/bin/thin (question updated with correct path) 

UPDATE

我在服务器上创建了一个基本的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) * 

似乎我安装的gem不在那里……不知道为了通过ssh调用来使用rubies / gemset版本。

你用捆绑器吗?

试着做

 bundle exec thin -v 

如果这不起作用或您不使用bundler,请通过键入来检查$PATH变量

 echo PATH 

如果gem不在路径中他将无法加载它,我打赌它是路径的东西:)更新他们和摇滚乐’滚动

在最坏的情况下,您将不得不生成rvm gem包装器,有关详细信息,请阅读此内容

http://beginrescueend.com/integration/god/

干杯!

我用另一种方式管理了这个。 我没有尝试从远程计算机重新启动服务器,而是安装了gem“rerun”(https://github.com/alexch/rerun),以便在更改某些代码时自动重启瘦服务器。

 rerun -- thin start 

诀窍真的很好

这个解决方案适合我(远程和capistrano!)

看看这个答案 !

只是地方:

 source "/usr/local/rvm/scripts/rvm" # or ~/.rvm/.. rvm use 1.9.3 

在/etc/init.d/thin

或者对于卡利斯特拉诺

 %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’