Redmineを1.3.0から2.0.0にアップグレードしようとしていますが、データベースの移行に問題があります。コマンドを実行すると:
rake db:migrate Rails_ENV=production
次のようなエラーが表示されます
rake aborted!
uninitialized constant Rails_ENV
私のエラーログは次のとおりです。
ActiveRecord::SubclassNotFound (The single-table inheritance mechanism failed to locate the subclass: 'GoogleAppsAuthSource'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite AuthSource.inheritance_column to use another column for that information.):
app/models/user.rb:139:in `try_to_login'
app/controllers/account_controller.rb:143:in `password_authentication'
app/controllers/account_controller.rb:138:in `authenticate_user'
app/controllers/account_controller.rb:30:in `login'
これが私の古いredmineで使用しているプラグインのリストです:
GoogleAppsプラグイン
Redmineコードレビュープラグイン
RedmineHudsonプラグイン
他の誰かがここでつまずいた場合、問題を解決する2つの方法があります
列名を無意味なものに手動で設定します。
self.inheritance_column = :_type_disabled
参照: http://apidock.com/Rails/ActiveRecord/Base/inheritance_column/class
単一テーブル継承エラーは、データベース内のtype
という名前の列が原因である可能性があります。
Railsがtype
という列名に遭遇した場合、サブクラスを持つモデルであると想定されるため、タイプによって使用するモデルが識別されます。元々=用に構築されていないプラグインがあると思います。 Railsはモデルでtype
列を使用しているため、Railsは失敗します。