0

このstackoverflowの指示に従った後、ローカルマシンで動作させることができました. デプロイ サーバーに gem をインストールして、サーバーをローカルで実行することもできます。

ruby-debugger を使用した Rails で「シンボルが見つかりません: _ruby_current_thread (LoadError)」がスローされる

デプロイには Capistrano を使用しています。問題は、Gemfile に次のものが含まれていることです。

gem 'linecache19', '0.5.13', :path => "~/.rvm/gems/ruby-1.9.3-p#{RUBY_PATCHLEVEL}/gems/linecache19-0.5.13/"
gem 'ruby-debug-base19', '0.11.26', :path => "~/.rvm/gems/ruby-1.9.3-p#{RUBY_PATCHLEVEL}/gems/ruby-debug-base19-0.11.26/"

RUBY_PATCHLEVEL はサーバーとローカル マシンで異なるため、ローカル マシンのパスを Gemfile.lock に追加し、サーバーではそこで gem を見つけようとしますが、パッチが異なるため検出できません。

以下はスタックトレースです

Gemfile を変更した後、展開モードでインストールしようとしています。他の場所で実行bundle installし、更新された Gemfile.lock をバージョン管理に追加します。

You have added to the Gemfile:
* source: source at ~/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-base19-0.11.26/
* source: source at ~/.rvm/gems/ruby-1.9.3-p125/gems/linecache19-0.5.13/

私のローカル マシンの Ruby のバージョンは 1.9.3-p194 で、サーバーのバージョンは 1.9.3-p125 です。どうすればこれを修正できますか?

4

1 に答える 1

0

'.rvmrcfileを使用して、プロジェクトが開発サーバーと本番サーバーの両方で同じ RUBY_PATCHLEVEL を使用する必要があることを指定します。

.rvmrc次の行を使用して、アプリケーションのメイン フォルダーにという名前のファイルを作成します。

rvm use 1.9.3-p125

これにより、プロジェクトは指定されたパッチ バージョンを使用するようになります。

もちろん、これは 1.9.3-p125 バージョンをローカルにインストールする必要があることを意味します。rvm はまさにその目的、つまりローカル マシンで複数のバージョンの Ruby を管理するためのものです。

私は通常、プロジェクト固有のgemsetsも持っており、.rvmrcファイルは次のようになります。

rvm_gemset_create_on_use_flag=1
rvm use <ruby version>@<gemset name ; usually the project name>

rvm_gemset_create_on_use_flag=1
rvm use 1.9.3@myblog
于 2012-10-20T19:24:01.467 に答える