Ruby On RailsにLoginEngineのソースを直しました
Ruby On RailsにLoginEngineのソースを直しました
万事準備OKというわけでブラウザからアクセスを試みたのですが
ここでもやっぱり失敗!!
ここら辺になってくると、もう怒りしかわいてこない中、
ネットで調査すると、どうもRails2.0では、
過去利用できた
<%= start_form_tag :action => ・・ %>
というタグが利用できないようになってしまっているとのこと。
<%= start_form_tag :action => 'xxxxx' %>
・・・・・
<%= end_form_tag %>
という箇所を、すべて下のように直す必要があります。
<% form_tag :action => 'xxxxx' do %>
・・・・・
<% end %>
具体的には
/vendor/plugins/login_engine/app/views/user/
以下の下のソースが修正対象です。
-change_password.rhtml (1箇所)
-edit.rhtml (3箇所)
-forgot_password.rhtml (1箇所)
-login.rhtml (1箇所)
-signup.rhtml (1箇所)
この修正で、何とかログイン画面にアクセスできるようになりました。
いや、長い道のりだった。
こんなことなら自分で作ったほうが早かったのでは?
と思わずには居られない感じですが、気を取り直してユーザーでも作ろうかと
ユーザー作成画面にリンクすると、(>_<)またもやエラー画面。
本当にいったいどうなっているんだと、怒る気力も萎えたのですが
何とか気を取り直してみると、
どうやら
/vendor/plugins/login_engine/app/views/user/
_edit.rhtml
_password.rhtml
の中の"user"、"submit"というオブジェクトをオブジェクトと認識していない模様。
どうしたものかと思ったのですが、不意に変数の前に「@」をつけてみたら何故か動き出す。
/vendor/plugins/login_engine/app/views/user/_edit.rhtml
<%= form_input changeable( @user, "firstname"), "First Name", "firstname" %> <%= form_input changeable( @user, "lastname"), "Last Name","lastname" %> <%= form_input changeable( @user, "login"), "Login ID", "login", :size => 30 %>
<%= form_input changeable( @user, "email"), "Email", "email" %> <% if @submit %> <%= form_input :submit_button, ( @user.new_record? ? 'Signup' : 'Change Settings'), :class => 'two_columns' %> <% end %>
/vendor/plugins/login_engine/app/views/user/_password.rhtml
<%= form_input :password_field, "Password", "password", :size => 30 %> <%= form_input :password_field, "Password Confirmation", "password_confirmation", :size => 30 %> <% if @submit %> <%= form_input :submit_button, 'Change password' %> <% end %>
※太字の箇所を追記しています。
これで新規登録画面も表示されるようになり、
やっとこさユーザー登録可能かと思うのもつかの間
ユーザーを登録しても登録されない(T_T)
Exceptionが途中で握りつぶされているようでしたが
/vendor/plugins/login_engine/app/controllers/user_controller.rb
の中の「transaction」の記述方法がRails2.0の仕様にあってないらしくそこで落ちていました。
というわけで
# Register as a new user. Upon successful registration, the user will be sent to
# "/user/login" to enter their details.
def signup
return if generate_blank
params[:user].delete('form')
params[:user].delete('verified') # you CANNOT pass this as part of the request
@user = User.new(params[:user])
begin
#User.transaction(@user) do
User.transaction do
@user.new_password = true
unless LoginEngine.config(:use_email_notification) and LoginEngine.config(:confirm_account)
@user.verified = 1
end
・
・
・
というように、合計5箇所の「transaction」を修正。
これでユーザー登録がまともにできるようになりました。
本当に長い道のりでした。
しかし、こんなにぐりぐり直しまくってデグレしてないか、
他にもバージョン不適合が存在しないかと不安だらけです。
また、英語のツールなので所どころ日本語化が必要だし
めんどくさいツールだなぁと、やっぱり自分で作ったほうが良かったのでは。。。。。。
というわけで、続報があればまたここで書きます。
########################################################
◎LoginEngineの導入
其の壱 http://d.hatena.ne.jp/sai-ou89/20080401
其の弐 http://d.hatena.ne.jp/sai-ou89/20080402
其の参 http://d.hatena.ne.jp/sai-ou89/20080403
其の四 http://d.hatena.ne.jp/sai-ou89/20080404
其の五 http://d.hatena.ne.jp/sai-ou89/20080604
########################################################