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 とはこれのことですか?
f:id:tohtas:20100228035103p:image
ちょっとお試ししたいだけなのに敷居が高すぎる、、、

とりあえず、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!
f:id:tohtas:20100228042010p:image

確かにない!

# tree app/views/cms 
app/views/cms

0 directories, 0 files

どうしたらいいんでしょう?
ここでいったんストップです!