3

Gemfile が 2 回読み込まれているようです。bundle install を実行すると...

Gemfile:

source 'http://rubygems.org'


gem 'haml'                    # asset engine
gem 'jquery-rails'
gem 'rails',                  '= 3.1.1'
gem 'readable_exceptions'
gem 'sass-rails',             "= 3.1.4"  # asset engine
gem 'uglifier'                # asset engine
gem 'bundler',                ">= 1.0.18" # 1.0.18 is required for proper asset pipeline support
gem "rake", "=0.8.7"
gem "resque"
gem 'date_validator'
gem "typhoeus"
gem 'newrelic_rpm'
gem "scout_rails"
puts "Loading Gemfile"

出力:

Loading Gemfile
Loading Gemfile
Using rake (0.8.7) 
Using multi_json (1.3.6) 
Using activesupport (3.1.1) 

これは、すべてが 2 回読み込まれる私の開発環境で問題を引き起こしていると思います。サーバーをパッセンジャー スタンドアロンで実行すると、次のような奇妙なログが記録されます。

開発ログ:

/app/models/facebook_application.rb:47: warning: already initialized constant APP_PROPERTIES
/app/models/facebook_application.rb:59: warning: already initialized constant ADJUSTABLE_MIGRATIONS
/app/models/facebook_application.rb:210: warning: already initialized constant MAX_TRIES

すべてが 2 回読み込まれる原因となるシステムの問題は何ですか?

私は:

  • RVM の使用
  • すべてのシステム ruby​​ gem を削除しました
  • バンドラーの使用
  • .rvmrc ファイルを削除しました
  • gemset を使用しない
  • ruby-1.9.2-p320 を使用
  • レール 3.1.1 の使用
4

3 に答える 3

2

何かが足りないのかもしれませんが、gem 'scout-rails' の後に puts 'Loading Gemfile' という行があるようです

したがって、Gemfile を 2 回ロードしているわけではないかもしれません (これは、何も壊れることなく 1 日中バンドル インストールできるため、実際には問題にはなりません)。それ。

于 2012-07-30T17:36:40.333 に答える
0

これが Bundler の仕事のやり方です。既存の依存関係を満たすために、いくつかのチェックを実行します。依存関係のツリーを取得するために、 Bundler はGemfile独自の DSL で実行されます。

Ruby レベルでは、二重要求は禁止されています。最初requireの呼び出しでファイルがロードされ、次の呼び出しfalseで、このファイルが既にパーティーに参加しているため、再度ロードする必要がないことが示されます。したがって、Bundler がエラーを引き起こす可能性はないと思います。

ところで、コマンドで使用bundle execする必要はありません。railsRails Core Team のメンバーがその理由を説明しています。

ちなみに #2:installはデフォルトbundleの動作です。

于 2012-07-30T19:39:59.147 に答える