1. 無料アクセス解析

crossroad's Blog

Javaを中心にした技術ネタなど。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

9arrowsインストール(やっと成功orz)

先日、セットアップでハマっていた 9arrows ですが、
うまく行った方からのコメント(以下、「かずきさんの手順」)も頂いて、
やっとこさセットアップできましたので、改めて手順をまとめておきます。

かずきさんにはこの場を借りて御礼申し上げます。m(_ _)m


【環境】
 ・Windows 32bit(私の場合は、Vista Ultimate SP1)


【ソフトウェア】
方法 ソフト バージョン 入手元 インストーラ
アーカイブ
備考
One Click Installerを使う Ruby One Click Installer 1.8.6-p26 http://rubyinstaller.rubyforge.org/wiki/wiki.pl ruby186-26.exe Rubyのインストールは、2パターン試しました。 One Click Installerを使うほうが簡単ですが、mswin32に比べてバージョンが若干古いです。 (とは言え、バージョンの違いはわずかなので問題はないと思います。 そもそも、バージョンにこだわるなら、ソースからビルドすべきかも。)
mswin32を使う Ruby mswin32 1.8.7-p72 http://www.garbagecollect.jp/ruby/mswin32/ja/ ruby-1.8.7-p72-i386-mswin32.zip
Ruby Gems 1.2.0 http://rubygems.org/ rubygems-1.2.0.zip
iconv http://www.dll-files.com/dllindex/dll-files.shtml?iconv iconv.zip
zlib PostgreSQLに付属のもの - -
どちらの方法でも共通 Open SSL PostgreSQLに付属のもの - -
PostgreSQL 8.3.3(for Windows) http://www.postgresql.org/ postgresql-8.3.3-2.zip
9arrows 0.9.0.1 http://9arrows.com/index.html 9arrows-all-0.9.0.1.tar.gz


【インストール】
 1.PostgreSQLのインストール
  ※ここでは、c:\PostgreSQL にインストールしています。

  (1)PostgreSQL本体のインストール
   ①アーカイブをダウンロードし、解凍してできた setup.bat を実行します。
    以降、ウィザードに従ってインストールします。
   ②環境変数 PATH に、c:\PostgreSQL\8.3\bin を追加します。

  (2)9arrows用のユーザ、データベースの作成
   ※ここでは、
    ・データベース:9arrows
    ・ユーザ:9arrows/9arrows
    として作成しています。

   ①PostgeSQLに付属の pgAdmin Ⅲ を起動し、インストールしたDBに接続します。
   ②ユーザ(ログインロール) 9arrows を作成します。
     Posgres_AddUser.png
   ③データベース 9arrows を作成します。
     Posgres_AddDB.png


 2.Rubyのインストール
  ※ここでは、c:\ruby にインストールしています。

  A.One Click Installer を使ったインストール
   (1)Ruby本体のインストール
    ①インストーラを実行し、ウィザードに従ってインストールします。
    ②環境変数 PATH に、c:\ruby\bin を追加します。
    ③PostgreSQLの bin/ 下にある、ssleay32.dll、libeay32.dll を、c:\ruby\bin に上書きします。

  B.mswin32 を使ったインストール
   (1)Ruby本体のインストール
    ①アーカイブを、c:\ruby に解凍します。
    ②環境変数 PATH に、c:\ruby\bin を追加します。

   (2)Ruby Gemsのインストール
    ①アーカイブを、任意の場所に解凍します。
     (ここでは、c:\rubygems-1.2.0 に解凍したとします)
    ②コマンドプロンプトで、以下を実行します。
     
     > c:\>cd c:\rubygems-1.2.0
     > c:\rubygems-1.2.0>ruby setup.rb
     
    ③iconvのアーカイブに含まれる、iconv.dll を、c:\ruby\bin にコピーします。
    ④PostgreSQLの bin/ 下にある、ssleay32.dll、libeay32.dll を、c:\ruby\bin にコピーします。
    ⑤PostgreSQLの bin/ 下にある、zlib1.dll を、zlib.dllにリネームして c:\ruby\bin にコピーします。

   (3)Rakeのインストール
    ①コマンドプロンプトで、以下を実行します。
     
     > c:\>gem install rake
     


 3.9arrowsのインストール
  ※ここでは、c:\9arrows にインストールしています。
  ※9arrowsが採用しているフレームワーク Ruby on Rails では、
    ・開発用(development)
    ・テスト用(test)
    ・運用用(production)
   の3つの環境を使い分ける事ができるようになっていますが、
   ここでは、運用用(production)を使う事にします。
   (別に、開発用でもテスト用でも問題ないですが、気分的に。。。)

  (1)9arrows本体のインストール
   ①アーカイブに含まれる、9arrows を、c:/9arrows にコピーします。

  (2)設定ファイルの修正
   ①データベース接続設定ファイル c:\9arrows\config\database.yml を以下の通り修正します。
    
     <略>
      :
    production:
      adapter: postgresql
      database: 9arrows
      username: 9arrows
      password: 9arrows
      host: localhost
    

  (3)データベースの初期化
    ①コマンドプロンプトで、以下を実行します。
     
     > c:\>cd c:\9arrows
     > c:\9arrows>rake RAILS_ENV=production db:schema:load
     (in c:/9arrows)
     Missing the Rails 2.1.0 gem. Please `gem install -v=2.1.0 rails`, 
     update your RAILS_GEM_VERSION setting in config/environment.rb 
     for the Rails version you do have installed, 
     or comment out RAILS_GEM_VERSION to use the latest version installed.
     

     GEM Rails 2.1.0 が必要とのことなので、Ruby Gemsでインストールします。
     
     > c:\9arrows>gem install -v=2.1.0 rails
     

     再度、データベース作成を実行します。
     
     > c:\9arrows>rake RAILS_ENV=production db:schema:load
     (in c:/9arrows)

     *******************************************************************
     * config.breakpoint_server has been deprecated and has no effect. *
     *******************************************************************

     rake aborted!
     Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (no such file to load -- pg)

     (See full trace by running task with --trace)
     

     こんどは、RubyからPostgreSQLに接続するためのGEMがないとのことなので、
     表示されたコマンドを実行します。
     
     c:\9arrows>gem install activerecord-postgresql-adapter
     ERROR:  While executing gem ... (Gem::GemNotFoundException)
       Could not find activerecord-postgresql-adapter (> 0) in any repository
     

     うーむ、activerecord-postgresql-adapter なんてものはないと。。。どういうことか。
     どうやら、ruby-postgres と言うGEMで代替可能なようなので、インストール。
     
     c:\9arrows>gem install ruby-postgres
     

     再々度データベース作成を実行します。
     
     > c:\9arrows>rake RAILS_ENV=production db:schema:load
     (in c:/9arrows)
     -- create_table("dat_calls", {:force=>true})
          :
         <略>
     -- initialize_schema_migrations_table()
       -> 0.0400s
     -- assume_migrated_upto_version(0)
       -> 0.0050s
     

     やっと成功。

     尚、かずきさんの手順によると、アーカイブ版の9arrowsでは正しくテーブル作成されず、
     SVNからソースを取得した、とありますが、僕の場合はちゃんとテーブルができてました。
     ダウンロードしたタイミングが違ったのかな?

  (4)メールサーバの設定
   ①環境設定ファイル c:\9arrows\config\environment.rb を以下の通り修正します。
    ・デフォルトはsendmailを使用するようになっているので、コメントアウト(=begin~=end)
    ・Gmail optionsのコメントを外し、自分のGMailアカウントにあわせて修正。
    
     <略>
      :
    # Mailer option
    # sendmail
    =begin
    ActionMailer::Base.delivery_method = :sendmail
    ActionMailer::Base.raise_delivery_errors = true
    ActionMailer::Base.smtp_settings = {
     :address => "",
     :port    => 25,
    :app_default_from => ""
    }
    =end
      :
    # Gmail options
    require "smtp_tls"
    ActionMailer::Base.raise_delivery_errors = true
    ActionMailer::Base.delivery_method = :smtp
    ActionMailer::Base.smtp_settings = {
     :address        => "smtp.gmail.com",
     :port           => 587,
     :domain         => 'gmail.com',
     :user_name      => "GMailのメールアドレス(@gmail.com含む)",
     :password       => "GMailのパスワード",
     :authentication => :plain
    }
    
   これで、後述のユーザ登録時、初期パスワードを記したにメールが送信されてくるはずですが、僕の場合は、    
   ArgumentError in LoginController#signup 
   wrong number of arguments (3 for 2)

   RAILS_ROOT: c://9arrows

   vendor/plugins/action_mailer_tls/lib/smtp_tls.rb:8:in `check_auth_args'
   
   と言うエラーが出てメールが送信されませんでした。
   (DBにユーザは登録されますが、初期パスワードはわからないのでログイン不能になる)
   
   原因は、C:\9arrows\vendor\plugins\action_mailer_tls\lib\smtp_tls.rb の8行目のようで、    
   #    check_auth_args user, secret, authtype if user or secret
   check_auth_args user, secret if user or secret
   
   のように、check_auth_args 呼出時のパラメタ authtype を削除したらメール送信されるようになりました。    ライブラリのバージョンがあってないのかなぁ。。。



【実行】
 1.9arrowsの実行
  (1)9arrowsの起動
   ①コマンドプロンプトで、以下を実行します。
    
    > c:\>cd 9arrows
    > c:\9arrows>ruby .\script\server webrick -p 3000 -e production
    => Booting WEBrick...
        :
    [2008-09-13 18:15:31] INFO  WEBrick::HTTPServer#start: pid=1496 port=3000
    

  (2)9arrowsにアクセス
   ①ブラウザから、http://localhost:3000/ にアクセスします。
    9rrows_Login.png
   ②「新規ユーザ登録」から、ユーザ登録します。
    ※初期ユーザとして、ninearrows/ninearrows が用意されています。

    が、ここでかずきさんの手順にもあるように、エラーになりました。
     9arrows_AddUserError.png
    
    ActiveRecord::StatementInvalid in LoginController#signup 

    PGError: ERROR:  duplicate key value violates unique constraint "mst_users_pkey"
    : INSERT INTO "mst_users" ("name", "address1", "start_date", "zip", "prefecture", "address2", "create_user_id", "company_name", "created_on", "srcpassword", "tel", "expire_date", "updated_on", "sex", "user_name", "birthday", "section_name", "fax", "login_id", "password", "update_user_id", "email", "valid_flg", "skype_id", "last_login_on") 
    VALUES(NULL, NULL, NULL, NULL, NULL, NULL, NULL, E'Free', '2008-09-13 18:21:34.463000', E'dhp7gb8sbn', NULL, NULL, '2008-09-13 18:21:34.463000', NULL, E'crossroad', NULL, NULL, NULL, E'***@***.***', E'*******', NULL, E'***@***.***', 1, NULL, NULL)

        RAILS_ROOT: c:/9arrows

        c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract_adapter.rb:147:in `log'
                :
    
   
    エラー内容は、主キー制約違反ですね。

    mst_usersの主キー id を見ると、"nextval('mst_users_id_seq'::regclass)"となっており、
    シーケンスから連番を取っています。
    シーケンス mst_users_id_seq を見ると、現在値が 1 になっていますが、
    mst_usersには id=1 で初期ユーザが登録されており、これが主キー違反の原因です。

    シーケンスなので、もう1回やればシーケンスがインクリメントされて、
    id=2 になるはず。。。と言うことで、ブラウザを戻して再度登録するとちゃんと登録されました。


Ruby、PostgreSQLに不慣れなこともあって、結構手間取りました。

あいにく、今の現場はこういうモノを利用して仕事の仕方を変えていくのは難しいのですが、
次の現場で(必要であれば)使うことを提案できるよう、あれこれ試行しようと思います。
関連記事
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2008/09/14(日) 19:42:24|
  2. ソフトウェア開発 Ruby
  3. | トラックバック:0
  4. | コメント:0
<<9arrowsを使ってみる。。。あれ?うむむ。 | ホーム | 9arrowsセットアップでハマる>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://bagineer.blog59.fc2.com/tb.php/163-5303ef3e
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

crossroad

Author:crossroad
関西在住。男。
フリーランスのソフトウェアエンジニア。
エレキベース(Rock&Roll)とお酒が好物でございます。

カテゴリー

タグリスト

Java F1 フリーランス ベーシスト HARRY TheStreetSliders iPhone FX お酒 Seasar Maven eclipse Wicket マイホーム 野球 プロジェクトファシリテーション Rails Ruby UML お店 ソフトウェア Tomcat S2Flex2 jsf Teeda Eclipse タグライブラリ ajax タスク europa mylyn trac 

ブログ内検索

最近の記事

最近のコメント

最近のトラックバック

カレンダー

04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

月別アーカイブ

全ての記事を表示する

全ての記事を表示する

Twitter


RSSフィード

リンク

このブログをリンクに追加する

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。