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!
でも、、、

f:id:tohtas:20100301001115p:image
やっぱりできてないな。CmsTemplateとか作ってないからな。
CmsProjectってid=1でつくっとかないといけないのかな??

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
=> []