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
どうしたらいいんでしょう?
ここでいったんストップです!