ラベル CRM の投稿を表示しています。 すべての投稿を表示
ラベル CRM の投稿を表示しています。 すべての投稿を表示

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プロジェクト作成時と同じようにすすめるだけ。
以下は今後作成予定。


データベースの作成