0

Thin を使用して、テスト マシンに配置されたレール アプリケーションを提供します。ローカル マシンからシンを停止/開始できるようにしたいのですが、次の方法では機能しません。

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)
*

私がインストールしたgemがそこにないようです...ただし、ssh呼び出しで使用するルビー/gemsetのバージョンを指定する方法がわかりません。

4

3 に答える 3

0

別の方法でこれを管理しました。リモート マシンからサーバーを再起動しようとする代わりに、gem "rerun" (https://github.com/alexch/rerun) をインストールして、コードが変更されたときにシン サーバーの再起動が自動的に行われるようにしました。

rerun -- thin start

トリックは本当にうまくいく

于 2012-04-26T09:04:50.767 に答える
0

このソリューションは私にとってはうまくいきました(リモートとカピストラーノ!)

この答えを見てください!

ちょうど置く:

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」に変更します。

于 2012-07-27T15:11:39.650 に答える
0

バンドラーを使用しますか?

やってみる

bundle exec thin -v

これが機能しない場合、またはバンドラーを使用していない場合は、次のよう$PATHに入力して変数を確認してください

echo PATH

宝石がパスにない場合、彼はそれをロードできません。パスのあるものだと思います:)それらを更新してロックンロールします

最悪の場合、rvm gem ラッパーを生成する必要があります。詳細については、こちらをお読みください。

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

乾杯!

于 2012-04-25T11:10:36.717 に答える