Rails製のeコマースパッケージ『EC-Rider』をMac OS Xで使ってみる 其の二
前回までのあらすじ
EC-RiderをDLして動かしてみようとしたら推奨環境がAmazon EC2 LargeだってずっこけそうになったけどOS Xで動くっしょ?とやりはじめてみたら壁にぶつかったけどなんかいけそうになってserver立ち上げてlocalhost:3000にアクセスしたらTemplateMissing!って実際ファイルないわーって困ってたらid:t-tairaさんにコメントもろたよ!
CMSで管理しているビューを生成してあげる必要があります。
ec_adminのRAILS_ROOTで、
rake ecr:cms:initialize # initialize cms data
rake ecr:cms:publish # publish cms_pages and cms_files.
を上記の順番で実行してください。ec_front側にビューが生成されます。
OK!やってみます
ec_adminに必要なライブラリをインストール
rake ecr:cms:initialize
をするに当たりまして、
rake gems:install
やっとかなあかんとおもうんですよ。前回はエラーが出たのでほったらかしにしてたからな。
rake gems:installをするでえ
# sudo rake gems:install Password: (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) no such file to load -- nested_ajax/form_builder/mark_for_destruction
このエラーな。
おや!?
# ll vendor/plugins/nested_ajax/lib/nested_ajax/form_builder total 24 drwxr-xr-x@ 5 sogo staff 170 2 27 23:41 . drwxr-xr-x@ 12 sogo staff 408 2 28 15:53 .. -rw-r--r--@ 1 sogo staff 3590 8 26 2009 belongs_to_field.rb -rwxr-xr-x@ 1 sogo staff 635 8 26 2009 mark_for_destruction. -rw-r--r--@ 1 sogo staff 233 8 26 2009 tag_for_object.rb
mark_for_destructionのファイル名が途中で切れとるでえ!
直しとくで
# mv vendor/plugins/nested_ajax/lib/nested_ajax/form_builder/mark_for_destruction. vendor/plugins/nested_ajax/lib/nested_ajax/form_builder/mark_for_destruction.rb
今度は
固まってしまった
# sudo rake gems:install Password: (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) gem install locale --version "= 2.0.4" /opt/local/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:232: warning: getc is obsolete; use STDIN.getc instead
なんか固まったままや!
gemファイルをDLして直接インストールする
潔くあきらめて代替案採用
http://rubyforge.org/frs/?group_id=1997&release_id=41421
locale-2.0.5.gem
locale_rails-2.0.5.gem
# sudo gem install locale-2.0.5.gem Password: Successfully installed locale-2.0.5 1 gem installed Installing ri documentation for locale-2.0.5... Installing RDoc documentation for locale-2.0.5... # sudo gem install locale_rails-2.0.5.gem Successfully installed locale_rails-2.0.5 1 gem installed Installing ri documentation for locale_rails-2.0.5... Installing RDoc documentation for locale_rails-2.0.5...
さて、これでgems:installは完了
rake ecr:cms:initialize いきます
いってみる
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) Rails Error: Unable to access log file. Please ensure that /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/log/development.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed. [WARNING] The git gem requires git 1.6.0.0 or later, but only found 1.5.5.4. You should probably upgrade. rake aborted! undefined method `supported_locales=' for I18n:Module (See full trace by running task with --trace)
エラーや!
logのパーミッション
# ll log total 24 drwxr-xr-x@ 5 sogo staff 170 2 28 17:06 . drwxr-xr-x@ 22 sogo staff 748 2 28 17:03 .. -rw-r--r--@ 1 sogo staff 3 4 27 2009 .gitignore -rw-r--r-- 1 root staff 51 2 28 01:50 development.log -rw-r--r-- 1 root staff 71 2 28 17:06 production_rotate.log
# sudo chown -R sogo log # ll log total 24 drwxr-xr-x@ 5 sogo staff 170 2 28 17:06 . drwxr-xr-x@ 22 sogo staff 748 2 28 17:03 .. -rw-r--r--@ 1 sogo staff 3 4 27 2009 .gitignore -rw-r--r-- 1 sogo staff 51 2 28 01:50 development.log -rw-r--r-- 1 sogo staff 71 2 28 17:06 production_rotate.log
gitは1.6.0.0以降を
# git --version git version 1.5.5.4
たぶん前にソースコードからビルドしてインストールしたな
portで入れ直します
# sudo port install git-core
再チャレンジ
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) rake aborted! undefined method `supported_locales=' for I18n:Module (See full trace by running task with --trace)
アウチ!
あれ?なんで2.0.4固定になっているんだろう
# rake gems (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) - [I] mongrel = 1.1.5 - [I] gem_plugin >= 0.2.3 - [I] daemons >= 1.0.3 - [I] fastthread >= 1.0.1 - [I] cgi_multipart_eof_fix >= 2.4 - [ ] locale = 2.0.4 - [ ] locale_rails = 2.0.4
# gem list *** LOCAL GEMS *** locale (2.0.5, 2.0.3) locale_rails (2.0.5, 2.0.3)
2.0.5入ってるのでコメントアウトしますね
/ec-rider0.8.1/ec_admin/config/environment.rb
33 #config.gem "locale", :version => '2.0.4' 34 #config.gem "locale_rails", :version => '2.0.4' 35 config.gem "locale" 36 config.gem "locale_rails"
またいきます
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:initialize begin rake ecr:cms:initialize failed! uninitialized constant Caboose::Acts::HasManyThroughWithoutDeletedAssociation /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:446:in `load_missing_constant' /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:80:in `const_missing_not_from_s3_library' /opt/local/lib/ruby/gems/1.8/gems/aws-s3-0.5.1/lib/aws/s3/extensions.rb:174:in `const_missing' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/vendor/plugins/acts_as_paranoid/init.rb:19:in `has_many_without_nested_ajax' /opt/local/lib/ruby/gems/1.8/gems/aws-s3-0.5.1/lib/aws/s3/extensions.rb:134:in `returning'
S3がらみのトレースがでてますけど
S3はないのでとりあえずコメントアウトしておく
/ec-rider0.8.1/ec_admin/config/environment.rb
44 #config.gem "aws-s3", :version => '0.5.1', :lib => "aws/s3"
はい いきまーす
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:initialize begin rake ecr:cms:initialize failed! uninitialized constant Caboose::Acts::HasManyThroughWithoutDeletedAssociation /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:446:in `load_missing_constant' /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:80:in `const_missing' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/vendor/plugins/acts_as_paranoid/init.rb:19:in `has_many_without_nested_ajax' /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/object/misc.rb:39:in `returning' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/vendor/plugins/acts_as_paranoid/init.rb:16:in `has_many_without_nested_ajax' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/vendor/plugins/nested_ajax/lib/nested_ajax/name_to_display.rb:54:in `has_many' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/app/models/cms_publish.rb:12 /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:380:in `load_without_new_constant_marking'
Caboose?
どうもこれはacts_as_paranoidがらみっぽい
おや!?
# ll vendor/plugins/acts_as_paranoid/lib/caboose/acts/ total 40 drwxr-xr-x@ 6 sogo staff 204 2 27 23:41 . drwxr-xr-x@ 3 sogo staff 102 2 27 23:41 .. -rwxr-xr-x@ 1 sogo staff 428 6 10 2009 belongs_to_with_deleted_asso -rwxr-xr-x@ 1 sogo staff 1210 6 10 2009 has_many_through_without_del -rw-r--r--@ 1 sogo staff 7368 10 16 09:55 paranoid.rb -rw-r--r--@ 1 sogo staff 3338 6 10 2009 paranoid_find_wrapper.rb
rbファイル名が途中で切れとる、、、
中身は問題なさそうなのでrbファイルを復旧
# cp vendor/plugins/acts_as_paranoid/lib/caboose/acts/belongs_to_with_deleted_asso vendor/plugins/acts_as_paranoid/lib/caboose/acts/belongs_to_with_deleted_association.rb # cp vendor/plugins/acts_as_paranoid/lib/caboose/acts/has_many_through_without_del vendor/plugins/acts_as_paranoid/lib/caboose/acts/has_many_through_without_deleted_association.rb
いきますよー
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:initialize begin rake ecr:cms:initialize failed! Couldn't find CmsProject with ID=1 /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:1586:in `find_one'
オーデーターがアリマセーン
とりあえずこれやってみっか
# rake db:data:load
だめだった
コメントアウトで逃げ
/ec-rider0.8.1/ec_admin/lib/ec_rider/cms_setup.rb
191 CmsProjectAssign.destroy_all 192 CmsPublish.destroy_all 193 CmsPublishedProject.destroy_all 194 CmsProjectApproval.destroy_all 195 #CmsProject.update(1, :acceptance_type_key => :no_approval, :status_key => :approved)
はいはーい いきまーす
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:initialize begin creating ecrider cms page data creating base project shop cms page data creating base project shop cms template data rake ecr:cms:initialize failed! 不正なレコードです。 /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/validations.rb:1090:in `save_without_dirty!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/dirty.rb:87:in `save_without_transactions!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:200:in `save!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `transaction' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:182:in `transaction' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:200:in `save!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:208:in `rollback_active_record_state!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:200:in `save!' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/lib/ec_rider/cms_setup.rb:40:in `create_shop_base_cms_templates'
どうも「表示可能位置とデフォルトテンプレート表示位置が合っていません。」というエラーが出ているもよう。
わからん。
無理矢理コメントアウト
/ec-rider0.8.1/ec_admin/lib/ec_rider/cms_setup.rb
32 def create_shop_base_cms_templates 33 CmsTemplate.display_position_keys.each do |position| 34 files = Dir.glob(File.join(EcRider.config.ec_admin_root, 'initial_data', 'cms', 'cms_layouts', "#{position}*.xml")) 35 update_template_content_from_fixture(files) 36 end 37 # topとbottomをデフォルトテンプレートに設定します 38 template = CmsTemplate.find(:first, :conditions => ['development_code = ?', 'cms/top']) 39 template.default_template_position_key = :top 40 #template.save! 41 template = CmsTemplate.find(:first, :conditions => ['development_code = ?', 'cms/bottom']) 42 template.default_template_position_key = :bottom 43 #template.save! 44 end
とおった!
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:initialize begin creating ecrider cms page data creating base project shop cms page data creating base project shop cms template data creating base project cms file data rake ecr:cms:initialize success!
# rake ecr:cms:publish (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:publish begin rake ecr:cms:publish success!
CmsProjectとCmsTemplateのレコードをつくってみます
CmsProjectのレコード登録
>> c = CmsProject.new({:id => 1, :priority => 1, :acceptance_type => 0, :project_code => '007', :project_name => 'ゼロゼロセブン', :started_at => Time.now, :finished_at => nil, :status_cd => 4, :created_at => Time.now, :updated_at => Time.now, :creator_id => nil, :updater_id => nil, :deleter_id => nil}) => #<CmsProject id: nil, priority: 1, acceptance_type: 0, project_code: "007", project_name: "ゼロゼロセブ\343\203\263", started_at: "2010-03-01 00:46:42", finished_at: nil, status_cd: 4, created_at: "2010-03-01 00:46:42", updated_at: "2010-03-01 00:46:42", creator_id: nil, updater_id: nil, deleter_id: nil> >> c.valid? => true >> c.save! => true
CmsTemplateのレコード登録 1つ目
>> template = CmsTemplate.new({:id => 1, :cms_project_id => 1, :name => 'ゼロゼロセブン', :display_position => 0, :delete_at_publish => false, :created_at => Time.now, :updated_at => nil, :default_template_position => 0, :terminal => 0, :template_code => nil, :development_code => 'cms/top', :creator_id => nil, :updater_id => nil, :deleter_id => nil}) => #<CmsTemplate id: nil, cms_project_id: 1, name: "ゼロゼロセブ\343\203\263", display_position: 0, delete_at_publish: false, created_at: "2010-03-01 02:00:25", updated_at: nil, default_template_position: 0, terminal: 0, template_code: nil, development_code: "cms/top", creator_id: nil, updater_id: nil, deleter_id: nil> >> template.valid? => true >> template.save! => true
CmsTemplateのレコード登録 2つ目
>> template = CmsTemplate.new({:id => 2, :cms_project_id => 1, :name => 'ゼロゼロナイン', :display_position => 1, :delete_at_publish => false, :created_at => Time.now, :updated_at => nil, :default_template_position => 1, :terminal => 0, :template_code => nil, :development_code => 'cms/bottom', :creator_id => nil, :updater_id => nil, :deleter_id => nil}) => #<CmsTemplate id: nil, cms_project_id: 1, name: "ゼロゼロナイ\343\203\263", display_position: 1, delete_at_publish: false, created_at: "2010-03-01 02:02:15", updated_at: nil, default_template_position: 1, terminal: 0, template_code: nil, development_code: "cms/bottom", creator_id: nil, updater_id: nil, deleter_id: nil> >> template.valid? => true >> template.save! => true
rake ecr:cms:initializeを実行
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:initialize begin creating ecrider cms page data creating base project shop cms page data creating base project shop cms template data rake ecr:cms:initialize failed! 不正なレコードです。 /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/validations.rb:1090:in `save_without_dirty!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/dirty.rb:87:in `save_without_transactions!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:200:in `save!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `transaction' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:182:in `transaction' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:200:in `save!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:208:in `rollback_active_record_state!' /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/transactions.rb:200:in `save!' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/lib/ec_rider/cms_setup.rb:40:in `create_shop_base_cms_templates' /Users/sogo/code/rails/ec-rider0.8.1/ec_admin/lib/tasks/ec_rider.rake:140
まだエラー
エラーが出ているのはここ
/ec-rider0.8.1/ec_admin/app/models/cms_template.rb
49 def validate 50 # 表示可能位置とデフォルトテンプレート表示位置の整合性チェック 51 unless self.default_template_position.nil? 52 unless self.display_position_key.to_s.include?(self.default_template_position_key.to_s) 53 errors.add_to_base "表示可能位置とデフォルトテンプレート表示位置が合っていません。" 54 end 55 end
無理矢理エラーが出ないようにしてみる(40行目と44行目)
/ec-rider0.8.1/ec_admin/lib/ec_rider/cms_setup.rb
37 # topとbottomをデフォルトテンプレートに設定します 38 template = CmsTemplate.find(:first, :conditions => ['development_code = ?', 'cms/top']) 39 template.default_template_position_key = :top 40 template.display_position_key = :top #add 41 template.save! 42 template = CmsTemplate.find(:first, :conditions => ['development_code = ?', 'cms/bottom']) 43 template.default_template_position_key = :bottom 44 template.display_position_key = :bottom #add 45 template.save! 46 end
rake ecr:cms:initializeを実行
# rake ecr:cms:initialize (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:initialize begin creating ecrider cms page data creating base project shop cms page data creating base project shop cms template data creating base project cms file data rake ecr:cms:initialize success!
success!した!
rake ecr:cms:publishを実行
# rake ecr:cms:publish (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record rake ecr:cms:publish begin rake ecr:cms:publish success!
success!した!
でも、、、
# cd ../ec_front # ll app/views/cms total 8cms/ drwxr-xr-x@ 3 sogo staff 102 2 27 23:41 . drwxr-xr-x@ 22 sogo staff 748 2 27 23:41 .. -rw-r--r--@ 1 sogo staff 4 8 26 2009 .gitignore
ビューファイルできてないっす!なんで?!
追記
>> CmsProject.find_all_to_be_deployed_or_deleted => []