から、私は(システムでレールから外部スクリプトを呼んでいる)、私はこれを取得:)Railsの
/home/user/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-
3.0.7/lib/active_record/connection_adapters/mysql_adapter.rb:22:in
`rescue in mysql_connection': !!! Missing the mysql2 gem. Add it to
your Gemfile: gem 'mysql2' (RuntimeError)
...
このエラーは、外部によって引き起こされていますrubygemsとアクティブなレコードをレールなしでロードするスクリプト。
require 'rubygems'
gem 'mysql2', '0.2.7'
require 'active_record'
...#active record initialization
c = Class.new # Class uses rails models
c.run
私もスクリプトがレール内使用するクラスを使用することができるよ:私はmysql2レールの同じバージョンを使用している指定した場合、スクリプトはまだシェルから動作します。つまり、use rakeは、active_recordの初期化を取り除いた後にスクリプトを実行できます。しかし、これが最初に何が起こっているのかを知ることはうれしいでしょう。
編集。 bundle execでスクリプトを実行すると、 'active_record'が必要なコメントを解除しない限り、同じエラーが発生します。この場合、モデルを呼び出すときにNameErrorsが残されます。
Edit2。 'gem list'と 'bundle exec gem list'を比較し、バンドルバージョンより新しいバージョンのgemを削除することで修正されました。バンドルのexecを使わないで実行することはまだ動作しています。 Gemfileにはレール3.0.7が必要でしたが、activerecordの3.1.0.beta1バージョンもインストールされていました。バンドルexecがレールバージョンを無視し、最新のバージョンのactiverecordをロードするようです。おそらくgem 'activerecord'、 '3.0.7'を外部スクリプトやgemfileに追加すると、この問題が解決されます。
Railsは同じrvmを使用していますが、シェルからbundle execを使用すると同じエラーが発生することがわかりました。それは実際にはスクリプト内の "active_record"を "必要とする"原因です。これがなければ、モデル名にNameErrorsが得られます。 – Cookies