Macportsでtomcat6をインストールしようとしたらOutOfMemoryErrorが起こる件
[javadoc] /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_java_xalanj/work/xalan-j_2_7_1/build/docs/apidocs/org/apache/xpath/objects//XNodeSet.html の生成 [javadoc] java.lang.OutOfMemoryError: Java heap space
xalanjのjavadoc作成でOutOfMemoryErrorが発生します。
回避方法がわからんかったのでApacheからDLしました。。
EC-Riderをbundlerを使って動かしてみる
bundlerはgemの便利管理ツールです
これを使ってみます。
bundlerのインストール
rvmが入ってるものとします。
# rvm install ruby-1.8.7-p248
最新はruby 1.8.7-p249だけど、下のエラー回避のためp248を使います
Rails 3 betaをrvmとruby 1.8.7でインストールする際のgetc is obsoleteエラーを回避する方法
# rvm use ruby-1.8.7-p248
# gem update --system
# gem install bundler
# bundle -v Bundler version 0.9.10
Rails 2.3系でbundlerを使うための設定
RAILS_ROOT以下にGemfileを作成します。
こんな感じです。
Gemfile
source :gemcutter source "http://gems.github.com" gem 'rails', '2.3.4' gem 'mysql' gem "mongrel", :version => '1.1.5' gem "locale", :version => '2.0.4' gem "locale_rails", :version => '2.0.4' gem "mislav-will_paginate", :version => '2.3.11', :lib => "will_paginate" gem "kakutani-yaml_waml", :version => '0.3.0', :lib => 'yaml_waml' gem "fastercsv", :version => '1.4.0' # for jp_address gem "ar-extensions", :version => '0.9.2' # for jp_address gem "rubyzip", :version => '0.9.1', :lib => "zip/zipfilesystem" gem "git", :version => '1.2.4', :lib => "git" gem "log4r", :version => '1.1.2' #gem "aws-s3", :version => '0.5.1', :lib => "aws/s3" gem "RedCloth", :version => '4.2.2' gem "roxml", :version => '2.5.3' gem "selectable_attr", :version => "0.3.7" gem "selectable_attr_rails", :version => "0.3.9" gem "state_flow" , :version => "0.2.1" gem "schema_comments" , :version => "0.1.1" gem 'magic_userstamp', :version => '0.1.1' gem 'vestal_versions', :version => '0.8.3' #gem 'rmagick', :version => '2.12.2' # development用 group :development do gem 'bullet' end gem 'rcov'
config/environment.rbの中の『config.gem 〜』は消しときます。
あとは、config/preinitializer.rbというのをつくるのと、config/boot.rbに少し追記します。
下のとおりです。
Rails 2.3
Using Bundler 0.9 with Rails 2.3 requires adding a preinitializer, and making a few changes to boot.rb. The exact changes needed can be found at http://gist.github.com/302406.
http://github.com/carlhuda/bundler
gemをインストール
RAILS_ROOTで
# bundle install Fetching source index from http://gemcutter.org/ Fetching source index from http://gems.github.com/ Resolving dependencies Installing RedCloth (4.2.3) from system gems Installing actionmailer (2.3.4) from system gems Installing actionpack (2.3.4) from system gems Installing activerecord (2.3.4) from system gems Installing activeresource (2.3.4) from system gems Installing activesupport (2.3.4) from system gems Installing ar-extensions (0.9.2) from system gems Installing bullet (1.7.5) from rubygems repository at http://gemcutter.org/ Installing cgi_multipart_eof_fix (2.5.0) from system gems Installing daemons (1.0.10) from system gems Installing fastercsv (1.5.1) from system gems Installing fastthread (1.0.7) from system gems Installing gem_plugin (0.2.3) from system gems Installing git (1.2.5) from system gems Installing kakutani-yaml_waml (0.3.0) from system gems Installing locale (2.0.5) from system gems Installing locale_rails (2.0.5) from system gems Installing log4r (1.1.5) from system gems Installing magic_userstamp (0.1.1) from system gems Installing mislav-will_paginate (2.3.11) from system gems Installing mongrel (1.1.5) from system gems Installing nokogiri (1.4.1) from system gems Installing rack (1.0.1) from system gems Installing rails (2.3.4) from system gems Installing rake (0.8.7) from system gems Installing roxml (3.1.5) from system gems Installing rubyzip (0.9.4) from system gems Installing schema_comments (0.1.2) from system gems Installing selectable_attr (0.3.11) from system gems Installing selectable_attr_rails (0.3.11) from system gems Installing state_flow (0.2.1) from system gems Installing vestal_versions (1.0.2) from system gems Your bundle is complete!
これ速いっすよ!
インストールできたらロックする
# bundle lock The bundle is now locked. Use `bundle show` to list the gems in the environment. # bundle show Gems included by the bundle: * RedCloth (4.2.3) * actionmailer (2.3.4) * actionpack (2.3.4) * activerecord (2.3.4) * activeresource (2.3.4) * activesupport (2.3.4) * ar-extensions (0.9.2) * bullet (1.7.5) * cgi_multipart_eof_fix (2.5.0) * daemons (1.0.10) * fastercsv (1.5.1) * fastthread (1.0.7) * gem_plugin (0.2.3) * git (1.2.5) * kakutani-yaml_waml (0.3.0) * locale (2.0.5) * locale_rails (2.0.5) * log4r (1.1.5) * magic_userstamp (0.1.1) * mislav-will_paginate (2.3.11) * mongrel (1.1.5) * nokogiri (1.4.1) * rack (1.0.1) * rails (2.3.4) * rake (0.8.7) * roxml (3.1.5) * rubyzip (0.9.4) * schema_comments (0.1.2) * selectable_attr (0.3.11) * selectable_attr_rails (0.3.11) * state_flow (0.2.1) * vestal_versions (1.0.2)
Rails製のeコマースパッケージ『EC-Rider』をMac OS Xで使ってみるよ vol.3
前回までのあらすじ
行き詰まった私に、id:t-tairaさんが降臨・・・!
rake ecr:cms:initializeを実行する前に、 rake db:fixtures:loadで、CMSの初期データをDBに登録する必要があります。 ec-adminのRAILS_ROOTで rake db:fixtures:load rake ecr:cms:initialize rake ecr:cms:publish を実行してみてください。 よろしくお願いします。今度こそw
OKですw
で
そのとおりやったら見事にec_front/app/views/cmsの下にビューファイルがズラリと!
レッツアクセス!
oh...
しかしこれは・・・!
第一回目にコメントアウトした
45 class EcHelperImpl 46 #TAG_MODULE_NAMES.each{|mod_name| include(EcHelper.const_get(mod_name))}
ここが原因じゃないか。
すいません。
コメントアウトを外します。
気を取り直して
おやおや?!
ログみるとこれは第一回目に出たconst_missingじゃないか。
Expected /Users/sogo/code/rails/ec-rider0.8.1/ec_front/app/helpers/ec_rider/ec_helper/method_description.rb to define EcRider::EcHelper::MethodDescription
回避ポイント
ec-rider0.8.1/ec_front/app/helpers/ec_rider/ec_helper 以下のファイルで
require 'ec_rider/ec_helper'
しているところ全部コメントアウトする。
#require 'ec_rider/ec_helper'
理由はないがこれで回避できた。あとで調べる。
autoloadとrequireがなんか絡まって変なことになってると思われる?
追記
しかし、この後トップページが出たあとにコメントアウトを外すとエラーが出なくなった。。
このあとに、また
uninitialized constant Caboose::Acts::BelongsToWithDeletedAssociation
これが出ました。
これは第二回で出たやっこさん。
ファイル名が切れてるんですわ。
# 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 415 11 13 14:33 belongs_to_with_deleted_asso -rwxr-xr-x@ 1 sogo staff 1184 11 13 14:33 has_many_through_without_del -rw-r--r--@ 1 sogo staff 7160 11 13 14:33 paranoid.rb -rw-r--r--@ 1 sogo staff 3244 11 13 14:33 paranoid_find_wrapper.rb
(其の二を参照)
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 => []
オブジェクトの特異メソッドを定義する(明示的に特異クラスのインスタンスメソッドとして定義する場合)
今度こそinstance_evalとmodule_evalを理解してもらった
最近の基礎シリーズいいです!もっとやってほしい!
環境
# ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9]
Objectのオブジェクトobj
>> obj = Object.new => #<Object:0x1a896d8> >> block = Proc.new do ?> def foo >> 'foo' >> end >> end => #<Proc:0x01a835bc@(irb):4>
objの特異クラスを取り出してインスタンスメソッドを定義
>> eigenclass = class << obj; self; end => #<Class:#<Object:0x1a896d8>> >> eigenclass.module_eval &block => nil >> eigenclass.__send__(:define_method, :hoge){ "hoge" } => #<Proc:0x01a7f7f0@(irb):3>
>> obj.foo => "foo" >> obj.hoge => "hoge"
特異クラスをインスタンス化できない
>> obj2 = eigenclass.new TypeError: can't create instance of virtual class from (irb):16:in `new' from (irb):16
このあたりの話で個人的に分かりやすかったのは実践Rails
実践 Rails ―強力なWebアプリケーションをすばやく構築するテクニック | |
株式会社クイープ オライリージャパン 2008-10-27 売り上げランキング : 242014 おすすめ平均 訳が残念すぎます 「Railsの外側」の問題解決の宝庫 Amazonで詳しく見る by G-Tools |
Rails製のeコマースパッケージ『EC-Rider』をMac OS Xで使ってみる
ネットショップを運営するならEC-Rider(イーシー・ライダー)
展開
#tar xvfz ec-rider0.8.1.tar.gz
その中は
# ls INSTALL INSTALL.rdoc README.rdoc ec_admin ec_front
ec_admin、ec_frontはそれぞれRailsアプリ。
管理アプリとフロントアプリということだと思う。
INSTALL.rdocをみてみる
=== 推奨環境
Amazon EC2 Large
Ubuntu 9.04
なんと、、、Amazon EC2 Large とはこれのことですか?
ちょっとお試ししたいだけなのに敷居が高すぎる、、、
とりあえず、Mac OS X 10.5.8 Leopard でいけるところまでいってみたいと思います。
Rubyは
# ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9]
mysqlは
# mysql5 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 32 Server version: 5.1.44 Source distribution
必要なライブラリをインストールする
MacPorts自体を最新にしておきます
# sudo port -d selfupdate # sudo port -d sync
MacPortsでインストール
# sudo port install rb-mysql # sudo port install libxml2 # sudo port install ImageMagick # sudo port install rb-rmagick
gemでインストール
# sudo gem install rmagick -v=2.12.2 # sudo gem install mongrel mongrel_cluster # sudo gem install sudo gem install rspec rspec-rails
ec_frontに必要なライブラリをインストール
# cd ec_front/ # sudo rake gems:install
mislav-will_paginateやkakutani-yaml_wamlがインストール失敗してしまった。
が、gemのsourcesにgems.github.comを追加して再度行なえばOK.
# sudo gem sources -a http://gems.github.com/ Password: http://gems.github.com/ added to sources # sudo rake gems:install
ec_adminに必要なライブラリをインストール
# cd ec_admin/ # sudo rake gems:install (in /Users/sogo/code/rails/ec-rider0.8.1/ec_admin) rake aborted! no such file to load -- nested_ajax/form_builder/mark_for_destruction
失敗しました!とりあえずfrontを動かしたいので放置して進みます。
ec_frontのmigrationします
# rake db:migrate RAILS_ENV=production (in /Users/sogo/code/rails/ec-rider0.8.1/ec_front) rake aborted! Permission denied - /Users/sogo/code/rails/ec-rider0.8.1/ec_front/log/production_rotate.log (See full trace by running task with --trace)
こけた!
# ll log total 24 drwxr-xr-x@ 5 sogo staff 170 2 28 01:48 . drwxr-xr-x@ 24 sogo staff 816 2 28 01:37 .. -rw-r--r--@ 1 sogo staff 3 4 27 2009 .gitignore -rw-r--r-- 1 root staff 51 2 28 01:37 development.log -rw-r--r-- 1 root staff 71 2 28 01:48 production_rotate.log
logファイルのオーナーがrootになっている。
# sudo chmod -R 775 log
とりあえず回避です。
もう一度
# rake db:migrate RAILS_ENV=production (in /Users/sogo/code/rails/ec-rider0.8.1/ec_front) SelectableAttrRails.add_features_to_rails SelectableAttrRails.add_features_to_active_record == MergeStep2BrancheOrMigrate: migrating ===================================== -- !!!WARNING!!! This maigrate will initialize tables Are you sure you want to continue? [yn]
微妙に誤字が気になる(maigrate)
yを選んでmigration完了!
このあと、productionにする意義がいまのところないことに気づいたので、developmentでmigrateし直しました。
サーバーを起動!
# ruby script/server => Booting Mongrel => Rails 2.3.4 application starting on http://0.0.0.0:3000 /opt/local/lib/ruby/1.8/fileutils.rb:243:in `mkdir': Permission denied - /Users/sogo/code/rails/ec-rider0.8.1/ec_front/tmp/cache (Errno::EACCES)
またパーミッションか!
tmpのオーナーがrootです。
# ll total 48 drwxr-xr-x@ 24 sogo staff 816 2 28 01:37 . drwxr-xr-x@ 9 sogo staff 306 2 28 00:01 .. -rw-r--r--@ 1 sogo staff 58 4 27 2009 .gitignore -rw-r--r--@ 1 sogo staff 1312 1 30 2009 .loadpath -rw-r--r--@ 1 sogo staff 448 11 5 2008 .project -rw-r--r--@ 1 sogo staff 151 2 4 2009 Capfile -rw-r--r--@ 1 sogo staff 307 11 5 2008 Rakefile drwxr-xr-x@ 8 sogo staff 272 2 27 23:41 app drwxr-xr-x@ 3 sogo staff 102 2 27 23:41 components drwxr-xr-x@ 20 sogo staff 680 2 28 01:50 config -rw-r--r--@ 1 sogo staff 186 10 16 09:55 config.ru drwxr-xr-x@ 6 sogo staff 204 2 27 23:41 db drwxr-xr-x@ 6 sogo staff 204 2 27 23:41 doc drwxr-xr-x@ 21 sogo staff 714 2 27 23:41 lib drwxr-xr-x@ 3 sogo staff 102 2 27 23:41 locale drwxrwxr-x@ 5 sogo staff 170 2 28 01:48 log drwxr-xr-x@ 3 sogo staff 102 2 27 23:41 po drwxr-xr-x@ 5 sogo staff 170 2 27 23:41 public drwxr-xr-x@ 25 sogo staff 850 2 27 23:41 script drwxr-xr-x@ 10 sogo staff 340 2 27 23:41 spec drwxr-xr-x@ 4 sogo staff 136 2 27 23:41 stories drwxr-xr-x@ 8 sogo staff 272 2 27 23:41 test drwxr-xr-x 3 root staff 102 2 28 01:37 tmp drwxr-xr-x@ 4 sogo staff 136 2 27 23:41 vendor
オーナー変えときます。
# sudo chown -R sogo tmp
再度起動します
# ruby script/server
http://localhost:3000にアクセスしたところ!
エラー出た!
/!\ FAILSAFE /!\ Sun Feb 28 02:46:20 +0900 2010 Status: 500 Internal Server Error Expected /Users/sogo/code/rails/ec-rider0.8.1/ec_front/app/helpers/ec_rider/ec_helper/method_description.rb to define EcRider::EcHelper::MethodDescription /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:426: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_front/app/helpers/ec_rider/ec_helper.rb:46:in `const_get' /Users/sogo/code/rails/ec-rider0.8.1/ec_front/app/helpers/ec_rider/ec_helper.rb:46 /Users/sogo/code/rails/ec-rider0.8.1/ec_front/app/helpers/ec_rider/ec_helper.rb:46:in `each' /Users/sogo/code/rails/ec-rider0.8.1/ec_front/app/helpers/ec_rider/ec_helper.rb:46
少し調べてみたけど、なんでエラーになるのかよくわからなかった。
EcRider::EcHelper.const_defined?(:MethodDescription)がfalseになったためエラーのようです。
こういう構造になっているので本質的には問題ないはず。
module EcRider module EcHelper module MethodDescription end end end
ただ、このconst_defined?が呼ばれる前にすでにロードされているので、不要じゃないか?と思ったので、ここの呼び出しの大元をコメントアウトしてみた。
helper群が
require 'ec_rider/ec_helper'
しているのが関係ありそう。
autoloadしてるからrequire不要じゃないかな?なんか上書きされておかしくなっているみたいに感じた。
ec-rider0.8.1/ec_front/app/helpers/ec_rider/ec_helper.rb の46行目をコメントアウトします
45 class EcHelperImpl 46 #TAG_MODULE_NAMES.each{|mod_name| include(EcHelper.const_get(mod_name))}
再度起動!
# ruby script/server
http://localhost:3000にアクセス!
MissingTemplate!
確かにない!
# tree app/views/cms app/views/cms 0 directories, 0 files
どうしたらいいんでしょう?
ここでいったんストップです!
[GAE]appengine-jrubyの環境でRailsを使っている場合のirb
# appcfg.rb run -S irb -r config/environment