Ruby on Railsで動くオープンソースのグループウェア「eNote for Community」というのをちょっといじってやろうということになり、会社のサーバーにセットアップしたのだけど、ほとんど1週間かかってしまった。Rubyのコード云々ではなく、Railsの環境設定というか、PostgreSQLとの接続がうまくいかずに悪戦苦闘するはめになった。
まず社内用の開発マシンにセットアップした。ちょっと苦労したが、どうにかeNote for Communityを動かすことができた。ところがこのマシンは社内ネットワークの、プライベートアドレスを割り当てているので外からアクセスすることができない。今回のプロジェクト参加メンバーに見てもらいたいので、外部向け開発マシンに環境を作ったのだが、ハマったハマった。
社内用マシンも社外用マシンもOSはLinuxのCentOS 5.3。
まずはruby、gem、railsのインストール
# wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.7-p302.tar.gz # tar xvzf ruby-1.8.7-p302.tar.gz # cd ruby-1.8.7-p302 # ./configure --prefix=/usr # make # sudo make install # cd # wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz # tar xvzf rubygems-1.3.7.tgz # cd rubygems-1.3.7 # sudo ruby setup.rb # cd # sudo gem install -v=2.3.5 rails # wget http://www.sqlite.org/sqlite-3.7.3.tar.gz # tar xfzv sqlite-3.7.3.tar.gz # cd sqlite-3.7.3 # ./configure --prefix=/usr # make # sudo make install # cd
これで一通りRuby on Railsが動く環境はできた。
「railstest」というアプリケーションを作り、ブラウザで動作を確認する
# rails new railstest # cd railstest # sudo bundle install # ruby script/rails server
ここまではどのマシン(合計3台にインストールした)でもほとんど問題なく進んだ。最新のruby 1.9.2やrails 3.0.2でも大丈夫。
いったんCtrl+Cでサーバーを止め、eNote for Communityのセットアップを行う。
#wget http://community.enote.jp/share/download?id=eNote-for-Community-0.9.1.tar.gz #tar zxfv eNote-for-Community-0.9.1.tar.gz #cd eNote-for-Community-0.9.1 #sudo gem install fastercsv #sudo gem install hpricot #sudo gem install pg -- --with-pg-config=/usr/local/pgsql/bin/pg_config
設定ファイル名から「sample」を取る
#sudo mv config/database.yml.sample config/database.yml #sudo mv config/environment.rb.sample config/environment.rb
database.ymlのパスワードを書き換え、データベース名もミススペルしているようなので修正
#sudo emacs config/database.yml
ここから先、ほとんど1日がかり。
#rake db:create
(in /home/masaru/eNote-for-Community)
Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (libpq.so.5: cannot open shared object file: No such file or directory – /usr/lib/ruby/gems/1.9.1/gems/pg-0.9.0/lib/pg_ext.so)
/usr/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in `rescue in rescue in establish_connection’
/usr/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:73:in `rescue in establish_connection’
/usr/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_specification.rb:68:in `establish_connection’
/usr/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/tasks/databases.rake:69:in `rescue in create_database’
/usr/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/tasks/databases.rake:35:in `create_database’
/usr/lib/ruby/gems/1.9.1/gems/rails-2.3.5/lib/tasks/databases.rake:31:in `block (2 levels) in‘
/usr/lib/ruby/1.9.1/rake.rb:634:in `call’
/usr/lib/ruby/1.9.1/rake.rb:634:in `block in execute’
/usr/lib/ruby/1.9.1/rake.rb:629:in `each’
/usr/lib/ruby/1.9.1/rake.rb:629:in `execute’
/usr/lib/ruby/1.9.1/rake.rb:595:in `block in invoke_with_call_chain’
/usr/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize’
/usr/lib/ruby/1.9.1/rake.rb:588:in `invoke_with_call_chain’
/usr/lib/ruby/1.9.1/rake.rb:581:in `invoke’
/usr/lib/ruby/1.9.1/rake.rb:2041:in `invoke_task’
/usr/lib/ruby/1.9.1/rake.rb:2019:in `block (2 levels) in top_level’
/usr/lib/ruby/1.9.1/rake.rb:2019:in `each’
/usr/lib/ruby/1.9.1/rake.rb:2019:in `block in top_level’
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling’
/usr/lib/ruby/1.9.1/rake.rb:2013:in `top_level’
/usr/lib/ruby/1.9.1/rake.rb:1992:in `run’
/usr/bin/rake:31:in `‘
Couldn’t create database for {“adapter”=>”postgresql”, “encoding”=>”unicode”,
“pool”=>5,”database”=>”enote4community_development”,”username”=>”postgres”,
“password”=>”xxxxxxx”, “host”=>”localhost”, “port”=>5432}
検索すると同じ悩みを抱えている人は大勢いるようで、みんな「gem install activerecord-postgresql-adapter」とやっても、そんなパッケージはないと書いている。「activerecord-postgresql-adapter」の代わりに「pg」を入れればうまくいのだと・・・ さっき入れたじゃないか。
しつこく、何度もpgのインストールをやってみるが、やはり結果は同じ。あちこち検索し、書かれていることを試し、それでもうまく動かず、インストールしたソフトやライブラリを削除して再インストールし・・・ これをずっと繰り返していた。
結局、su postgresでpostgresになり、さらにsuでルートになって
#sudo gem install postgres -- --with-pg-config=/usr/local/pgsql/bin/pg_config
とやったら、rake db:createが通った。
データベースができたので、データの導入
#rake db:migrate #ruby script/server
ようやくeNote for Communityが起動した。
私も本サイトを参考に挑戦しましたが、3日かかりました。
eNote for Communityの環境は作れましたが設定のやり方がよくわからないので、使えるようになるまでには時間がかかりそうです。
要望ですが下記の「データベース名もミススペル」とは何処でしょうか?
特に修正せずとも動作しているので、教えて頂けないでしょうか。
>database.ymlのパスワードを書き換え、データベース名もミススペルしているようなので修正
黒犬さん コメントありがとうございます
> 要望ですが下記の「データベース名もミススペル」とは何処でしょうか?
16行目、41行目、64行目で「database: enote4commnuty_」という記述があるのですが、commnutyはcommunityの間違いだと思います。
ただ、3カ所とも間違いで統一されているので、問題なく動いているのでしょう。
私の方は、eNoteはテストしただけで実際には使わなかったので、これ以上カスタマイズなどはやっていません。
Ruby on Railsはインストール時に、各パッケージのバージョンを一致させておかないとトラブルようです。
なるほど「community」の間違いには気がつきませんでした
説明ありがとうございます。
いまeNote for Communityをいじっていますがマニュアルが無く、直感的にさわるには少し辛いですね。
「施設グループ、施設マスタ」が未登録だと施設予約画面でエラーになると、気がつくまでかなり時間がかかりました。
せめて設定手順のマニュアルは公開して欲しい物です。