2011年7月28日木曜日

覚書:will_paginate 3.0.pre4一部修正

そろそろRails3を覚える必要がでてきました。

will_paginateを利用した際、:per_pageパラメータを文字列(数字の)で渡したときに

TypeError (String can't be coerced into Fixnum):

なるエラーが発生したので、will_paginateのソースを一部修正しました。
バージョンは 3.0.pre4です。

~/.rvm/gem/ruby-1.9.2-@290@rails3/gems/will_paginate/lib/will_paginate/finder/active_record.rb
の112行目あたり
 options = options.except(:page, :per_page, :total_entries, :count)
  # add 1 line
  per_page = per_page.to_i if per_page # この行を追加
  rel = limit(per_page).page(pagenum)

なぜか:pageパラメータは、文字列が渡っても、数字であればエラーは発生しないみたいです。

2011年2月22日火曜日

オープンソース ECサイト:エレコマ(Elecoma)インストール CentOS編

今回はエレコマのインストール手順通り、CentOS5.5、Apache+Passengerで確認。

基本的にはダウンロードに含まれる README の手順通りでほぼ導入までできました。
いくつかハマったり、勝手に変更した箇所がありますのでメモとして。
まだインストール、初期画面表示までの確認です。

準備
  1. checkinstall の導入
    ruby、git 等をrpmで管理するため、checkinstallを導入しています。
    すみませんが、導入手順は割愛させていただきます。

動作確認したバージョンをいくつか
  1. Rubyのバージョン 1.8.7
  2. Railsのバージョン 2.3.8
    =>[2011-02-26追記] ファイル選択のフォームで<BR>タグが表示されてしまう不具合がありそう。 2.3.5に変更。
    また、もしかしたらgemも1.5.xだと依存性の問題があるかもしれないので、RubyGemsは1.3.7あたりをお勧めします。
    =>[2011-02-27] 上記のrails不具合と思われる症状は2.3.10に変更したら解消されました。
  3. Passengerのバージョン 3.0.2 =>[2011-02-26追記] 特に問題はないと思いますが、2.2.7に下げました。

権限関連、他
  1. SELinux
    本来、詳細な権限設定をすべきなのでしょうが、残念ながら知識がなく・・・
    ♯ setenforce 0 で SELinux を無効にして動作
  2. アプリケーションのディレクトリ、ファイルのオーナー変更
    /usr/local/ec/public の tmp、log ディレクトリのオーナー を apache:apache に変更
    また config/environment.rb のオーナーを  apache:apache に変更
  3. /tmp ディレクトリのパーミッションを 777に変更
    ここはだいぶハマってしまったのですが、Passengerのドキュメントにはテンポラリのディレクトリ設定は http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerTempDir を参照すると環境変数 PASSENGER_TMPDIR で設定できるようなのですが、何度試しても/tmpに一時ファイルが作成されてしまいました。
  4. /etc/ld.so.conf.d/に usr-local-lib.conf を作成(名前は何でもいいと思いますが、拡張子がconfなら)
    ライブラリのパス設定を追加する必要があるので、上記ファイルに /usr/local/lib の1行を追加し、
    # /sbin/ldconfig
    を実行 以上です。
[ 2011-02-26追記]
  1. PostgreSQL 8.4の場合
    yum install postgresql84
    yum install postgresql84-server
    yum install postgresql84-devel
    でインストール
  2. さらにアダプタ
    gem install pg

ほかに気づいたら追記していきます。

2011年2月9日水曜日

オープンソース ECサイト:Elecoma(エレコマ)をPassenger上で実行

前回は、手抜きをしてNetBeansからMongrelを起動して、エレコマが起動するところまで確認しました。

今回Apache2+Passengerで動作させてみます。
インフラにはめっぽう弱いので、Apacheの設定ファイルを久々にさわってみました。
環境はMacOSXですので、設定ファイル(ec.conf)を
/private/etc/apache2/other
に置きます。

Apacheの起動

$ sudo apachectl -k start
もしくは

$ sudo apachectl -k restart
で良いようです。
ところが
/usr/sbin/apachectl: line 82: ulimit: open files: cannot modify limit: Invalid argument
というエラーがでて、再起動できませんでした。
こちらは、apachectlの82行目を変更して対応。
ここを参考にしました。


VirtualHostの設定はしていますが、DNSやHostsファイルの設定はありませんので、
ブラウザから
http://localhost/
でアクセスしてみます。

ところが403 Forbiddenが発生。
しばらく苦戦しましたが、当たり前の httpd.conf でルート/が Deny from all に。
こちらをとりあえずAllow from allに修正して、無事Passenger上で起動できました。
(くだらいない記事ですみません・・・)

[2011-02-12 追記]
その後何故かPassenger上で起動できなくなってしまいました。
いろいろと試してみましたが、うまくいかないのでCentOS上に構築してみたいと思います。
Macではライブラリの構成など、なかなか難しいようです。

とりあえずMongrelでは動きますので、テスト用として使いたいと思います。
Java の Webアプリケーションと比べると、環境構築で苦しむケースが多くなりそうですね。

2011年2月7日月曜日

オープンソース ECサイト:Elecoma(エレコマ)のインストール2

オープンソースのECサイト構築パッケージElecoma(エレコマ)
インストール時のメモ2


前回はプラグインのインストールまで実施しました。

今回はPassengerのインストール。(はじめに断っておきますが、とりあえずMongrelで動かしたところまでです)

$ sudo gem install passenger
$ sudo passenger-install-apache2-module 

以下の内容が表示され、うまくApache2のモジュールがインストールできたようです。
コンソールに以下のメッセージが表示されたので、メモがわりに転記。

The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
   PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.2
   PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Press ENTER to continue.


--------------------------------------------
Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:

   
      ServerName www.yourhost.com
      DocumentRoot /somewhere/public    # <-- be sure to point to 'public'!
      
         AllowOverride all              # <-- relax Apache security settings
         Options -MultiViews            # <-- MultiViews must be turned off
      
   

And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

  /Library/Ruby/Gems/1.8/gems/passenger-3.0.2/doc/Users guide Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
http://www.modrails.com/

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.


Apacheの設定を変更します。
Macでは httpd.conf は /private/etc/apache2/ にありました。
直接httpd.confを修正するのではなく、ec.conf を作成するようなので、
/private/etc/apache2/other/ec.conf を作成してみます。


LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.2
PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

<VirtualHost *:80>
  ServerName ec.example.com
  DocumentRoot /Users/<user>/NetBeansProjects/elecoma2.1/public
  RailsEnv production
  <Directory /Users/<user>/NetBeansProjects/elecoma2.1/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

Postgres のアダプタをインストールする際、
Can't find the PostgreSQL client library (libpq)
のエラーがでてハマりましたが、結局
gem install postgres-pr をNetBeans上で実行したら、データベースのマイグレーションが実行できました。
気になる警告
DEPRECATION WARNING: Rake tasks in vendor/plugins/ar_fixtures/tasks, vendor/plugins/image_submit_tag_ext/tasks, vendor/plugins/jpmobile/tasks, vendor/plugins/jpmobile_emoticon_filter/tasks, vendor/plugins/mbmail/tasks, and vendor/plugins/yaml_waml/tasks are deprecated. Use lib/tasks instead. (called from /Library/Ruby/Gems/1.8/gems/rails-2.3.8/lib/tasks/rails.rb:10)

が表示されましたが、とりあえず進めます。

Passenger もインストールしましたが、NetBeansのMongrel 1.1.5 からも起動できました。


インストールはかなりしんどかった。

2011年2月6日日曜日

オープンソース ECサイト:Elecoma(エレコマ)のインストール

オープンソースのECサイト構築パッケージElecoma(エレコマ)
インストール時のメモ

Linuxではyumを利用すると思いますが、今回はMacでインストールのため、MacPortsでトライしてみます。

ImageMagicは以下のサイトで、Mac用バイナリのインストール方法が記載されていました。

http://www.imagemagick.org/script/binary-releases.php#macosx


$magick> sudo port install ImageMagick

とのことなので、早速。・・・待つこと数分。インストール完了。

以下の通り確認。
$ port installed Image*
Warning: port definitions are more than two weeks old, consider using selfupdate
The following ports are currently installed:
ImageMagick @6.6.3-0_0+q16 (active)

MacPortsのアップデートをしろとのメッセージが表示されているので、
$ sudo port selfupdate
を実行しておきます。

続いて、Rmagick
こちらは http://rmagick.rubyforge.org/install-osx.html を参考にするとgemでインストールできるようなので、NetBeansのツール>Ruby Gemsからインストール。
どうやら書き込み権限がなく失敗。


ちなみにNetBeansのパーミッションの問題は
に記載されていましたが、パーミッションの変更をするという対処になりそうなので、それならコマンドラインからでいいか・・・と思っています。


Rmagickのサイトに記載のとおり

$ sudo gem install rmagick

でインストールします。



Password:
Building native extensions.  This could take a while...
Successfully installed rmagick-2.13.1
1 gem installed
Installing ri documentation for rmagick-2.13.1...

No definition for Magick_colors
 :

と警告のようなメッセージが出ますが、 gem list で確認すると rmagick はインストールされていました。

更にgemで最新版をインストールしてみます。
gettext 2.1.0, gruff 0.3.6, rspec-rails ...

と進んて、rspec-rails インストール時に 
ERROR:  Error installing rspec-rails:
thor requires RubyGems version >= 1.3.6
とエラーが。

$ sudo gem update --system 

を実行。一気に1.5.0になってしまいました。

rspec-railsは無事インストールできた模様。

curl -O http://www.artonx.org/data/lhalib/lhalib-0.8.1.gem
$ sudo gem install lhalib-0.8.1.gem
を実行したのですが、失敗。Mac ではダメか・・・

スキップして、インストールマニュアル通り、webmock、thoughtbot-factory_girl をインストール。

続いて、git は以前に導入済みなので、各種プラグインをインストールします。
NetBeansからインストールしてみますが、vendor/plugins ディレクトリがないので、作成してから実行します。

やはり、NetBeansからではプラグインを見つけることができないようなので、コマンドラインからREADMEどおりにすすめることに。

$ git checkout 654ce3ec2dfa10ac3b05cd9354eb84456d206a6d
は -b オプションが必要らしく
$ git checkout -b 654ce3ec2dfa10ac3b05cd9354eb84456d206a6d
で実行

プラグインは無事インストール完了。

次回はサーバの設定、DBマイグレーション等へ進みましょう。

2011年2月2日水曜日

オープンソース CRM(Fat Free CRM) データを見てみる2

前回に続き、マイグレーションの順で見ていきましょう。

今回は 002_create_user.rb です。

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users, :force => true do |t|
      t.string   :uuid,             :limit => 36
      t.string   :username,         :null => false, :default => "", :limit => 32
      t.string   :email,            :null => false, :default => "", :limit => 64
      t.string   :first_name,       :limit => 32
      t.string   :last_name,        :limit => 32
      t.string   :title,            :limit => 64
      t.string   :company,          :limit => 64
      t.string   :alt_email,        :limit => 64
      t.string   :phone,            :limit => 32
      t.string   :mobile,           :limit => 32
      t.string   :aim,              :limit => 32
      t.string   :yahoo,            :limit => 32
      t.string   :google,           :limit => 32
      t.string   :skype,            :limit => 32
      # >>> The following fields are required and maintained by [authlogic] plugin.
      t.string   :password_hash,    :null => false, :default => ""
      t.string   :password_salt,    :null => false, :default => ""
      t.string   :remember_token,   :null => false, :default => ""
      t.string   :perishable_token, :null => false, :default => ""
      t.string   :openid_identifier
      t.datetime :last_request_at
      t.datetime :last_login_at
      t.datetime :current_login_at
      t.string   :last_login_ip
      t.string   :current_login_ip
      t.integer  :login_count,      :null => false, :default => 0
      # >>> End of [authlogic] maintained fields.
      t.datetime :deleted_at
      t.timestamps
    end     

    add_index :users, [ :username, :deleted_at ], :unique => true
    add_index :users, :email
    add_index :users, :last_request_at
    add_index :users, :remember_token
    add_index :users, :perishable_token
  end

  def self.down
    drop_table :users
  end
end

特に変わったところはなさそうです。
ただ、ユーザの識別子として、uuidを使用しているようです。
ところがテーブルのデータを見てみると、お決まりのidの次はusernameになっています。
どこかでuuidのカラムを削除しているのでしょうか?

・・・ありました。023_remove_uuid.rb が。何か理由があったのでしょうけど、経緯がわかるのはいいのですが、もうusersテーブル作成のところに含めてもいいように思えるのですが。
私もまだRuby歴が浅いので、Railsの文化を理解できていないので、何か理由があるのでしょうかね。

またauthlogicプラグインを使用しているようです。
使用している項目は名称からある程度予想がつくと思います。
 https://github.com/binarylogic/authlogic_example に authlogicプラグインの説明がありますので一応メモ。

次に少々目的から脱線しますが、usersテーブルに対応するモデルクラス /app/model/Userを少し見てみます。

class User < ActiveRecord::Base
  attr_protected :admin, :suspended_at

管理者区分のadminと、休止しているユーザの情報はattr_protectedの宣言(宣言的メソッドという方がいいのかも知れませんが)がなされています。
これは外のクラスから情報を変更されないようにという事なのでしょうか。

その他にも、Userクラスには勉強不足のため理解できないところが多いのですが、まずはデータ構造から見ていこうと思いますので、次回は openid_tablesと思いきや、これはあとで削除されています。ので次回はaccountsを。

オープンソース CRM(Fat Free CRM) データを見てみる

ブログを始めて1ヶ月が経とうとしていますが、Rubyの勉強もしながら、ブログも・・・となると時間がもったいないような気もしていました。
ところが、意外とブログを書いて、記事を参考にしている方が少しでもいるならと、逆に頑張ってしまいそうです。
睡眠不足にはならないよう、少しずつですが続けていきたいと思います。

さて、今回は Fat Free CRM のテーブルを覗いてみます。

/db/migrate フォルダにある最初のマイグレーションファイルは
001_create_session.rb
です。

これは、sessionsテーブルを作成するマイグレーションファイルです。
通常のWebアプリケーションならセッションの情報をブラウザのクッキーにもたせます。Railsでもセッション情報は通常クッキーに保持させるようですが、Railsにはセッション情報をデータベースに持たせる仕組みが予め備わっているそうです。

Rakeタスクに
db:sessions:create
があります。
NetBeansで実行しようとすると次のような説明があります。
Creates a sessions migration for use with ActiveRecord::SessionStore
このRakeタスクを実行することによって、ActiveRecord::SessionStroreと連携してセッション情報をDBに保持することができるようになるようです。

上記のRakeタスクを実行したあとには、db:migrate が必要になりますが、Fat Free CRM では一気に作成してもらっていますので、自分でアプリケーションを作成する際に、この仕組を使うならこの2つのRakeタスクが必要になります。

また、
/config/initializers/session_store.rb
の15行目に
ActionController::Base.session_store = :active_record_store
とあり、これがデータベースでセッション管理するよ!という指定のようです。

実際にアプリケーションにログインして、データを見てみると2件レコードが作成されていました。
でもまだ、クッキーを見ると、sessionsテーブルのsession_idに設定されているデータを同じクッキーがブラウザで確認できました。

書籍「RailsによるアジャイルWebアプリケーション開発 第3版」によると、どうもapplication.rbも修正が必要とのこと。

Fat Free CRM では、
/app/controllers/application_controller.rb
の30行目にある
# protect_from_forgery # :secret => '165eb65bfdacf95923dad9aea10cc64a'
のコメントを外す必要あるようです。(書籍とファイル名が異なるのはRailsのバージョンの違いのせい?)

このあたりの設定が問題なければ、セッションをデータベースで管理できるようになるようですね。
あとで、コメントを外して試してみます。 今日はここまで。

2011年1月31日月曜日

オープンソース CRM(Fat Free CRM) 日本語化

ここ1週間ほど体調が良くないため、昨日は出かけずに家でおとなしくしていました。
特に先週末は寒かったし、乾燥していて体調を崩しやすいと思いますので、みなさんも気をつけてください。インフルエンザも今週がピークと言われているようですし・・・

さて、前回は Fat Free CRM が起動するところまで確認しましたが、日本語表示されていませんでした。

config/settings.yml の以下の通り、:locale シンボルの所を"en-US"から"ja"に変更します。



# Locale.
#------------------------------------------------------------------------------
# Default locale is American English.
#
# :locale: "en-US"
:locale: "ja"

サーバを再起動して、再度http://localhost:3000/login にアクセスしてみます。
んー。日本語にならないですね・・・

再度 crm:setupを実行します。
すると、


Your database is about to be reset, so if you choose to proceed all the existing data will be lost.

Continue [yes/no]:

と質問されます。データがすべて消えてしまうようですので、問題なければyを選択して続けます。今回まだデータを登録していませんので、y を入力して続けます。

前回と同様 admin のユーザとパスワード、メールアドレスを入力して完了します。

気をとりなおして、サーバを再起動してみましょう。

ログイン画面も日本語になりました

アプリケーションも無事日本語化されたようです

2011年1月30日日曜日

オープンソース CRM(Fat Free CRM) DB作成

昨日はみなとみらいの遊園地「よこはまコスモワールド」に行ってきました。横を通ったことはなんどもありますが、知人の子どもたちと初めて乗り物にも乗りましたが、料金の高さに驚くばかり。冬の寒さのせいか、お客もすくなかったので、待たずに乗れる点はいいですね。

さて、前回に続きFat Free CRMの導入の続きで、今回はデータベース作成を行います。

環境を再確認しておきます。

だいぶ以前にインストールしたのでバージョンの確認を。
$ ls -l /usr/local/
total 16
drwxrwxrwx@ 14 *** wheel 476 5 15 2010 apache-tomcat-6.0.26
drwxr-xr-x 8 root wheel 272 1 22 00:43 git
drwxr-xr-x 4 root wheel 136 7 31 2010 hw_mobile_userdata
lrwxr-xr-x 1 root wheel 29 8 22 00:23 mysql -> mysql-5.5.1-m2-osx10.6-x86_64
drwxr-xr-x 17 root wheel 578 12 29 2009 mysql-5.5.1-m2-osx10.6-x86_64
lrwxr-xr-x 1 *** wheel 32 5 14 2010 tomcat -> /usr/local/apache-tomcat-6.0.26/

どうやらMySQL バージョン 5.5.1ですね。
ちなみに以下のコマンドで確認できます。
$ mysql -u root

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.1-m2  |
+-----------+
1 row in set (0.01 sec)

MySQLを起動させておきます。

インストールした Fat Free CRM のREADME.rdocを見ると、

$ cp config/database.mysql.yml config/database.yml
とありますので、database.ymlファイルをコピーします。
NetBeans上でファイルのコピーペースでもできます。
database.mysql_1.ymlという名前になってしまうので、これをdatabase.ymlに修正します。
ちなみにNetBeans上でファイル名を変更する際、ダイアログが表示されますが拡張子は表示されないようです。ですので、ダイアログにはdatabaseのみ入力すれば良いようですね。

database.ymlを見てみる(一部抜粋)
development:
  adapter: mysql
  encoding: utf8
  database: fat_free_crm_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

特に変更するところはないようです。ソケットファイル mysql.sock の場所は環境によって変わるかもしれません。私の場合、とくに変更しなくてもよいようです。
以前、mysql.sock が見つからなくて苦労した経験がありますが、MySQLが起動している間だけ作成されるファイルですので、このファイルを探すときは、MySQLを起動してからにしましょう。

前振りが長くなりましたが、いよいよデータベースの作成です。
NetBeansのプロジェクト上で、右クリック(私の場合、指2本でスライドパットをタップ)し、Rakeタスクの実行を選択します。
Rakeタスクの一覧が表示されるので、db:createを選択して実行します。

コンソールには
(in /Users/toshinobu/NetBeansProjects/fat_free_crm.git)
が表示されます。

Macの場合はNetBeans上からはdb:createが問題なく実行されていました。
WindowsではNetBeans上から実行してもデータベースが作成できないようですので、コマンドラインから実行してください)

続いて、READMI.rdocには

$ rake crm:setup
と記載されていますので、同じようにNetBeans上でそのとおり実行してみます。


(in /Users/toshinobu/NetBeansProjects/fat_free_crm.git)
==  CreateSessions: migrating =================================================
-- create_table(:sessions)
   -> 0.1515s
-- add_index(:sessions, :session_id)
   -> 0.1541s
-- add_index(:sessions, :updated_at)
   -> 0.1345s
==  CreateSessions: migrated (0.4404s) ========================================
  :
  :
To create the admin user you will be prompted to enter username, password,
and email address. You might also specify the username of existing user.

Username [system]:                    # UsernameとPasswordはデフォルトのまま
Password [manager]: stty: stdin isn't a terminal

stty: stdin isn't a terminal
Email: ***@******                     # Emailはとりあえず適当に 

The admin user will be created with the following credentials:

  Username: system
  Password: *******
     Email: ***@******

Continue [yes/no/exit]: y
Admin user has been created.

サーバを起動してhttp://localhost:3000/loginにアクセスしてみます。(NetBeans上で起動すると画面が自動的に表示されます。どこかで設定されているのでしょう)


system/managerでログインしてみます。
次の画面が表示されます。

日本語にするのを忘れていました。
次回は日本語にしてみます。

2011年1月28日金曜日

オープンソース CRM(Fat Free CRM)のインストール

オープンソースのCRMはいくつかあるけど、ここもあえてRuby製にこだわってみます。
なので Fat Free CRM をインストールしてみます。

今回試す環境は次の通り。

環境
  • OS: MacOSX 10.6
  • IDE: NetBeans6.9.1
IDEの準備
  • NetBeans6.9.1にnbgitプラグインを導入する
    http://code.google.com/p/nbgit/downloads/detail?name=nbgit-0.4-netbeans-6.9.nbm
    からダウンロードします。

    ツール>プラグイン>ダウンロード済み からダウンロードした
         nbgit-0.4-netbeans-6.9.nbm   
    を指定します。
    インストールが無事成功すれば、チーム>Git がメニューに追加されているはずです。

インストール画面
インストール済みプラグインを確認
nbgitが追加されています

ダウンロード
  • オープンソースCRM fat free crm のダウンロード
    https://github.com/michaeldv/fat_free_crm.git
    から最新のソースをチェックアウトしたいと思います。
    チーム>Git>Clone Other... を選択します。

    Repository URLに
    git://github.com/michaeldv/fat_free_crm.gitt
    を指定し、次へ


    続けて完了ボタンで、ソースがチェックアウトされます。

    続いて、プロジェクトを作るか質問されます。


    Create Project ボタンを押下します。


    あとは通常のRailsプロジェクト作成時と同じようにすすめるだけ。
以下は今後作成予定。


データベースの作成

2011年1月24日月曜日

2011年1月23日日曜日

Ruote2.1 ワークフローエンジン:クイックスタート

Ruote2.1はおもにRuby 1.9.1でテストされています。多分 Ruby 1.8.7でもうまくいくのではないでしょうか。
・・・と書かれているので、Ruby1.8.7の環境で試しています。ちなみに開発環境はMac。

このクイックスタートは最低限のプロセスが実行されることを狙っています。これは特別?なサンプルです。

Ruote2.1の取得

最近のバージョンのgitがあるなら、つぎのコマンドラインで実行できます。

ちなみに私のgitのバージョンは
$ git --version
git version 1.7.1.1

git clone git://github.com/jmettraux/ruote.git

Cloning into route...
fatal: The remote end hung up unexpectedly

んー。エラーが出てしまったようです。
Mac環境なので、Mac版のgitをhttp://code.google.com/p/git-osx-installer/
からダウンロードしてみます。
環境がMacなので git-1.7.3.5-x86_64-leopard.dmg をダウンロードし実行します。
インストーラーが起動します。

まだターミナル上でgitのバージョンを確認しても変わらず1.7.1.1が表示されるので、Pathの設定が必要か・・・
とりあえずREADMEファイルを読んでみる。

/usr/local/gitディレクトリが作成されるとのこと。確認するとたしかにあります。
この更にbinディレクトリのgitコマンドでバージョンを確認すると

$ ./git --version
git version 1.7.3.5

やはりこちらに最新バージョンがインストールされました。

$ /usr/local/git/bin/git clone git://github.com/jmettraux/ruote.git
Cloning into ruote...
remote: Counting objects: 18891, done.
remote: Compressing objects: 100% (5471/5471), done.
remote: Total 18891 (delta 13903), reused 18101 (delta 13311)
Receiving objects: 100% (18891/18891), 3.65 MiB | 882 KiB/s, done.
Resolving deltas: 100% (13903/13903), done.

最新バージョンのgitで実行したら、上手くダウンロードできたようです。

ruoteディレクトリがカレントディレクトリに作成されました。

では更に手順通りに

cd ruote
git checkout ruote2.1

$ /usr/local/git/bin/git checkout ruote2.1
Already on 'ruote2.1'

すでにあると言われてしまった。
では先に進めます。

$ rake build
(in /Users/***/NetBeansProjects/ruote)
gem build ruote.gemspec
warning: Insecure world writable dir /usr/local in PATH, mode 040777
Successfully built RubyGem
Name: ruote
Version: 2.1.12
File: ruote-2.1.12.gem
mkdir pkg
mv ruote-2.1.12.gem pkg/

うまくいった模様。さらに・・・
$ gem install pkg/ruote-2.1.12.gem を実行。
WARNING: Installing to ~/.gem since /Library/Ruby/Gems/1.8 and
/usr/bin aren't both writable.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/installer.rb:149: warning: Insecure world writable dir /usr/local in PATH, mode 040777
WARNING: You don't have /Users/***/.gem/ruby/1.8/bin in your PATH,
gem executables will not run.
Successfully installed rufus-json-0.2.5
Successfully installed rufus-cloche-0.1.20
Successfully installed rufus-dollar-1.0.4
Successfully installed rufus-mnemo-1.2.0
Successfully installed tzinfo-0.3.24
Successfully installed rufus-scheduler-2.0.8
Successfully installed sexp_processor-3.0.5
Successfully installed ruby_parser-2.0.5
Successfully installed rufus-treechecker-1.0.4
Successfully installed ruote-2.1.12
10 gems installed
Installing ri documentation for rufus-json-0.2.5...
Installing ri documentation for rufus-cloche-0.1.20...

sudoを使わなかったから警告か・・・

$ sudo gem install pkg/ruote-2.1.12.gem
Password:
Successfully installed ruote-2.1.12
1 gem installed
Installing ri documentation for ruote-2.1.12...
Installing RDoc documentation for ruote-2.1.12...

やり直しました。


# if you're using C (MRI) Ruby :
gem install yajl-ruby

# if you're using JRuby :
gem install json-jruby

# on windows :
gem install json_pure

私の環境はCRuby(Matz' Ruby Implementation)なので

$ sudo gem install yajl-rubyBuilding native extensions. This could take a while...
Successfully installed yajl-ruby-0.7.9
1 gem installed
Installing ri documentation for yajl-ruby-0.7.9...
Installing RDoc documentation for yajl-ruby-0.7.9...

一応ここまでは順調。

最初の実行(First run)

ruote_quickstart.rbが用意されているので、これを実行します。

$ ruby examples/ruote_quickstart.rb
I received a message from Alice

これで確認完了なのか?

2011年1月22日土曜日

Ruote2.1 ワークフローエンジン:ドキュメントを見てみる

オープンソースのワークフローエンジンruoteの日本語化を、自らの覚書のために、始めてめみようと思います。
(本記事は何ら保証する文書ではありませんので、本家を十分確認ください。)

RuoteはRubyで書かれたワークフローエンジンです。
Ruoteはステートマシンライブラリではありません。

これ(Ruote)はビジネスプロセスの仕事の組織網?を表現できます。稟議などの承認経路のようなものでしょうか。またはビジネスルール、業務手順といいたほうが良いか。

Ruoteエンジンは一度に複数のプロセスを実行できるでしょう。
プロセスはRubyDSLやXMLやJSONで書かれたプロセス定義で具体的に示されます。

ユーザ、ユーザのグループ、サービス、レガシーシステムが関係する(でいいのかな)

ライセンスはMIT open source lisence。
日本語読みでは「るおて」で良い模様。

以前はopenwferuと呼ばれていたそうです。

To be continued

2011年1月11日火曜日

Rhodes:Rubyとスマートフォン(Android、iPhone)アプリ 一石二鳥?(その2)

まだ日本語の情報も少ないのでrhomobile社のTutorialを試すことにしました。
どうもフリーアカウントのユーザ登録が必要なようなので、早速登録。

やっぱりModelを作ってDBにデータを登録してからログインができるようになりそうだ。
当たり前といえば当たり前。

モデルの作成
> rhogen model product brand,name,price,quantity,sku
を実行します。
Ruby on Railsのジェネレータにあたるコマンドですね。データベースにproductsテーブルを作成するためのマイグレーションファイルができるはず。と思ったら、erbファイル(テンプレート、MVCのVIEW)と、ControllerとModelのrbファイルが生成されましたね。それからなんだかtest用のファイルも。


興味深いのはModelクラス product.rb が通常RailsならActiveRecord クラスを継承するのに、何も継承していない・・・。
product.rb
-----------------
# The model has already been created by the framework, and extends Rhom::RhomObject
# You can add more methods here
class Product
include Rhom::PropertyBag

# Uncomment the following line to enable sync with Product.
# enable :sync

#add model specifc code here
end

その代わりなのか Rhom::PropertyBag をMix-inしている。
これも後で調べてみよう。

さて、app/index.erbの23行目を
<a href="Product"><span class="title">Products</span><span class="disclosure_indicator"/></a>
に修正して再度
>rake run:android
を実行。

Newボタンを押すと、登録画面が表示されます。


ここまでは順調だが、まだまだ先は長い・・・

Rhodes:Rubyとスマートフォン(Android、iPhone)アプリ 一石二鳥?(その1)

Rubyの学習を始めたが、iPhoneのアプリケーション作成もしてみたい・・・
それにはObjective-Cを知る必要があるしなぁ。と思っていたところなんとRhodesという仕組みがあることを知りました。
Rhomobile’s free and open source mobile application framework Rhodes とあり、Rhomobile社のモバイルアプリケーションフレームワークです。

http://journal.mycom.co.jp/articles/2010/07/22/rhodes/index.html の記事を参考にインストールからAndroidのエミュレータ(iPhoneでないのは、今回Windows7 64bit上で試していたためです)が起動するところまでは確認。でもログインIDとパスワードがわからず、今回はここまで。



先日紹介したThinkPad X40(SSD換装済み)上でも試してみたのですが、起動にめちゃめちゃ時間がかかった。
今回はIntel Core i5 760 2.8GHz マシンなので早くなると思いましたが、ビルドにはやはり数分。
ソースの変更がなければビルドしないようで、2回目のエミュレータ起動はかなり早かった。
Rhodesを試す(通常のAndroid SDKでの開発も同じだと思いますが)には相当のマシンが必要ですね。
ちなみにX40ではエミュレータ上でボタンを押しても10秒くらい(極端か?)反応がありませんでした。