基礎Ruby on RailsのasagaoをRails2.3に対応させる
2012/08/15
基礎Ruby on RailsのasagaoをRails2.2に対応させる
若干合わなかったのでサポート。
「config.action_view.cache_template_extensions=
で始まる行を config/environments.development.rb から削除すればよいそうです。」
これだけだとまだエラーが・・・
-------------------------------
rake aborted!
A key is required to write a cookie containing the session data. Use config.action_controller.session = { :key => "_myapp_session", :secret => "some secret phrase" } in config/environment.rb
-------------------------------
というわけで、
config/environment.rb
にある
# config.action_controller.session_store = :active_record_store
こいつを下記のようにした
config.action_controller.session = { :key => "_riken_session", :secret => "適当な半角英数文字列30文字以上"}
さて、次。まだエラーが続く。
--------------------
rake aborted!
a YAML error occurred parsing db/fixtures/development/members.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html
The exact error was:
NameError: uninitialized constant Member::Digest
--------------------
おお、まじっすか。tabは使ってないんだけど・・・(謎
と思ったら、ここが原因。。。
--------------------
hashed_password: <%= Member.hashed_password('password', 12345678) %>
--------------------
なんだろうと思案。
とりあえず、こいつを探してみる→hashed_password
$rak hashed_password
するといろいろ出てきた。
---------------------------------
db/development_structure.sql
79| `hashed_password` varchar(255) default NULL,
db/migrate/003_alter_members.rb
7| add_column :members, :hashed_password, :string
24| remove_column :members, :hashed_password
db/fixtures/production/members.yml
16| hashed_password: <%= Member.hashed_password('password', 12345678) %>
test/unit/member_test.rb
111| assert_not_nil member.hashed_password
113| assert_equal Digest::SHA1.hexdigest(sprintf("%s%08d", 'abc', member.salt)), member.hashed_password
170| # attributes= で直接 salt, hashed_password,
175| pw = m.hashed_password
179| 'salt' => '', 'hashed_password' => 'abc',
185| assert_equal pw, m.hashed_password
test/fixtures/members.yml
16| hashed_password: <%= Member.hashed_password('password', 12345678) %>
33| hashed_password: <%= Member.hashed_password('password', 23456789) %>
50| hashed_password: <%= Member.hashed_password('password', 34567890) %>
67| hashed_password: <%= Member.hashed_password('password', 45678901) %>
85| hashed_password: <%= Member.hashed_password('password', 99999999) %>
app/models/member.rb
7| attr_protected :salt, :hashed_password,
90| if member and member.hashed_password ==
91| hashed_password(password, member.salt)
99| def self.hashed_password(password, salt)
108| self.hashed_password = Member.hashed_password(pw, self.salt)
------------------------------
最初が一番怪しい。
------------------------------
db/development_structure.sql
79| `hashed_password` varchar(255) default NULL,
------------------------------
たぶんvarchar(255)からはみ出てるんだろうなぁ。
ということで、
db/development_structure.sql
の79行目を
------------------------------
# `hashed_password` varchar(255) default NULL,
`hashed_password` text default NULL,
------------------------------
こいつに書き換えて
$ rake db:initialize --trace
通りましたよっと!
これでWebサーバを起動すればトップページが見られると思います。
ふぅ~
>>エラーの原因に気付いたのはこちらのお陰
--------------
Tabや?以外にも、使用できない文字が結構ありそうなので、詳しくYAMLの仕様について調べてみるつもり。
--------------
同じく惑わされましたとさ・・・ ありがとうございました!