問題を見つけました。 Authlogicのlib/authlogic/acts_as_authentic/base.rb
からこのスニペットを見てください:
private
def db_setup?
begin
column_names
true
rescue Exception
false
end
end
column_names
がエラーをスローした場合、db_setup?
はfalseを返します。 base.rb
からも、この他の機能を見てください:
def acts_as_authentic(unsupported_options = nil, &block)
# Stop all configuration if the DB is not set up
raise StandardError.new("You must establish a database connection before using acts_as_authentic") if !db_setup?
raise ArgumentError.new("You are using the old v1.X.X configuration method for Authlogic. Instead of " +
"passing a hash of configuration options to acts_as_authentic, pass a block: acts_as_authentic { |c| c.my_option = my_value }") if !unsupported_options.nil?
yield self if block_given?
acts_as_authentic_modules.each { |mod| include mod }
end
db_setup?
戻りfalseの場合、Authlogicはcolumn_names
によってスローされた例外、ではなく、同じ例外がスローされます。
私の問題はcolumn_names
はこの例外投げていたということでした。私のユーザーテーブルがないusers
、user
と呼ばれていることを
/Users/jason/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:1106:in `async_exec': PG::Error: ERROR: relation "users" does not exist (ActiveRecord::StatementInvalid)
LINE 4: WHERE a.attrelid = '"users"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
、その例外の理由を、しかし、Railsは適切に設定私のpluralize_table_names
に拾っていませんでした。 pluralize_table_names
の問題を解決したら(明らかに、この設定の仕方はRails 3.1で変更されています)、私のAuthlogicの問題は解消されました。だから、
あなたはこの問題を抱えているならば、あなたはこのしようとする場合があります:(Authlogicのローカルバージョンを使用するようにGemfileを変更して、あなたのdevのマシン
上のどこかにAuthlogicレポを
- クローンを
'authlogic', :path => '/path/to/authlogic'
)
- は、あなたが別の、潜在的メートルを取得する場合参照してください
begin
/rescue
/end
句
- 外
db_setup?
にcolumn_names
呼び出しを追加します私のように正確で有益なエラーが発生しました
を移行私は以前は大人気のファンだったし、LDPA、RPXなどのアダプターも含め、2.x時代には多くのアプリを使っていました。私はこれらのほとんどを3.0.xと3.2にアップグレードしましたが、そのプロセスでは、全体的により良い、より簡単に移行することができました。簡単ですし、コードはより洗練されています(一般に3.0時代に設計されたため)。これはあなたの質問に答えるものではありません。私はそれを言いますので、authlogicが噛みついていればそれを念頭に置いてください。夢のように変えることはそれほど大したことではありませんし、基礎を整えるためにあなたをまったく待っているわけでもありません。 – tardate
先日私はついにDeviseに切り替わりました。それは驚くほど簡単で無痛なスイッチでした。 –
これは修正されているようです。今のところ、マスターブランチから引き出すには、gem = authlogic、:git => 'git:// github.com/binarylogic/authlogic.git''をgemfileに使用する必要があります。 –