CentOS 4.7へのRetrospectivaインストール(その1)
噂のRetrospectivaをインストール(というかセットアップ?)してみました。が大いにはまる。
今回だけでは終わってませんので注意。
3回目http://24503.diarynote.jp/200901301640007425/にてインストールできました。
■インストール済み関連モジュール
Ruby1.8.7-1
Rails2.1.2
MySQL4.1.22-2.el4
Subversion1.4.6
■パスなど
ディレクトリ/home/retrospectiva/retrospectiva
MySQLパスワードexsample
MySQLソケット/tmp/mysql.sock
アドレスyourhost
▽RoR環境の構築
ここでは省略(したのがまずかった・・・)。
後で何度もやる羽目になります。
▼モジュールのインストール
iconvとreadlineなるものをインストールしておくらしい。
どっちもgem installしましたが失敗ってことで調べたところ、
iconvはRuby 1.8.x以降には標準実装らしく、またreadlineはyumでインストールされていました。
問題なしと判断して次へ。
▼ソースのダウンロード
▼DB(MySQL)の準備
username, password, socketを書き換えてやる
Railsのバージョンが新しすぎてダメっぽいので、Railsを2.0.2をインストール。
もっかいrake
MySQLが4のためvarcharのサイズは255まで(5なら65,535まで可能)。
MySQLをVer5に変更するという256という手もありますが、
1バイト違いなので255にしちゃっても大丈夫だろうという判断で書換えます。
3箇所ありました。256→255へ変更。
でもっかいrake
ここで大嵌り。デバッグとか色々行って、下記サイトにたどり着きました。
http://wiki.radiantcms.org/undefined_method_for_enumerable
Ruby1.8.7のString#charsとRails2.0.2のActiveSupport::Multibyte::Charsオブジェクトとの
同名の宣言での非互換性によるものでエラーが出ているようです。
そこで、config/environment.rbにコードをはってみたら、ということなので、
んで三度のrake。
通ったぁぁぁ。あ、上記のCharの問題は将来的には直すそうです。
▼Webでの確認
Webからの更新用にディレクトリのパーミッションを変更します。
これで準備ができたのでとりあえずMongrelで動かしてみる。
クライアントからブラウザでhttp://yourhost:3000にアクセス。
>500 Internal Server Error
orz
コンソールにエラーになった箇所がずらずらと並んでいるので、
調べてみたところ、Rubyのパッチバージョンがどうもよろしくないらしい・・・。
ので・・・。
▼RoR環境の構築
結局やる羽目に。やり方自体は過去の日記を参照ください。
Ruby自身は最新パッチ版(p72)でもインストールできるんですが、
RubyGemインストール時にYamlライブラリ無いよってエラー吐くんですよね。
というわけで少しずつ遡りながらインストールしてみてます。
噂のRetrospectivaをインストール(というかセットアップ?)してみました。が大いにはまる。
今回だけでは終わってませんので注意。
3回目http://24503.diarynote.jp/200901301640007425/にてインストールできました。
■インストール済み関連モジュール
Ruby1.8.7-1
Rails2.1.2
MySQL4.1.22-2.el4
Subversion1.4.6
■パスなど
ディレクトリ/home/retrospectiva/retrospectiva
MySQLパスワードexsample
MySQLソケット/tmp/mysql.sock
アドレスyourhost
▽RoR環境の構築
ここでは省略(したのがまずかった・・・)。
後で何度もやる羽目になります。
▼モジュールのインストール
iconvとreadlineなるものをインストールしておくらしい。
どっちもgem installしましたが失敗ってことで調べたところ、
iconvはRuby 1.8.x以降には標準実装らしく、またreadlineはyumでインストールされていました。
問題なしと判断して次へ。
▼ソースのダウンロード
$ cd /home/retrospectiva
$ mkdir retrospectiva
$ svn co http://retrospectiva.googlecode.com/svn/trunk retrospectiva
▼DB(MySQL)の準備
$ mysql -u root -p
mysql> CREATE DATABASE IF NOT EXISTS retrospectiva character set utf8;
mysql> GRANT ALL PRIVILEGES ON retrospectiva.*
-> TO "retrospectiva"@"localhost"
-> IDENTIFIED BY "exsample";
mysql>quit
$ cd /home/retrospectiva/retrospectiva/
$ cp config/database.yml.todo config/database.yml
$ vi config/database.yml
-----------------------------------------------------------------
production:
adapter: mysql
database: retrospectiva
username: retrospectiva
password: exsample
encoding: utf8
socket: /tmp/mysql.sock
development:
adapter: mysql
database: retrospectiva_development
username: retrospectiva
password: exsample
encoding: utf8
socket: /tmp/mysql.sock
:
adapter: sqlite3
database: tmp/test_db
:
adapter: postgresql
database: retrospectiva_test
username: root
password:
host: localhost
:
adapter: mysql
database: retrospectiva_test
username: retrospectiva
password:exsample
encoding: utf8
socket: /tmp/mysql.sock
-----------------------------------------------------------------
username, password, socketを書き換えてやる
$ rake RAILS_ENV="production" db:retrospectiva:load
>(in /home/retrospectiva/retrospectiva)
>Missing the Rails 2.0.2 gem. Please `gem install -v=2.0.2 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.
Railsのバージョンが新しすぎてダメっぽいので、Railsを2.0.2をインストール。
# gem install -v=2.0.2 rails
もっかいrake
$ rake RAILS_ENV="production" db:retrospectiva:load
>Mysql::Error: Column length too big for column ’path’ (max = 255); use BLOB or TEXT instead: CREATE TABLE `changes` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `changeset_id` int(11) DEFAULT NULL, `revision` int(11) DEFAULT 0 NOT NULL, `name` varchar(2) DEFAULT ’’ NOT NULL, `path` varchar(256) DEFAULT ’’, `from_path` varchar(256) DEFAULT NULL, `from_revision` int(11) DEFAULT NULL, `repository_id` int(11) DEFAULT NULL) ENGINE=InnoDB
MySQLが4のためvarcharのサイズは255まで(5なら65,535まで可能)。
MySQLをVer5に変更するという256という手もありますが、
1バイト違いなので255にしちゃっても大丈夫だろうという判断で書換えます。
$ vi db/schema.rb
-----------------------------------------------------------------
(省略)
create_table "changes", :force => true do |t|
t.integer "changeset_id"
t.integer "revision", :default => 0, :null => false
t.string "name", :limit => 2, :default => "", :null => false
t.string "path", :limit => 255, :default => ""
t.string "from_path", :limit => 255
t.integer "from_revision"
t.integer "repository_id"
end
(中略)
create_table "projects", :force => true do |t|
t.string "name"
t.text "info"
t.string "short_name"
t.boolean "closed", :default => false
t.integer "repository_id"
t.string "root_path", :limit => 255, :default => ""
t.text "existing_wiki_page_titles"
t.text "disabled_modules"
t.text "existing_tickets"
t.text "existing_revisions"
t.string "locale", :limit => 12
end
(省略)
-----------------------------------------------------------------
3箇所ありました。256→255へ変更。
でもっかいrake
$ rake RAILS_ENV="production" db:retrospectiva:load
>rake aborted!
>undefined method `[]’ for #
ここで大嵌り。デバッグとか色々行って、下記サイトにたどり着きました。
http://wiki.radiantcms.org/undefined_method_for_enumerable
Ruby1.8.7のString#charsとRails2.0.2のActiveSupport::Multibyte::Charsオブジェクトとの
同名の宣言での非互換性によるものでエラーが出ているようです。
そこで、config/environment.rbにコードをはってみたら、ということなので、
$ vi config/environment.rb
-----------------------------------------------------------------
(省略)
# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = ’2.0.2’ unless defined? RAILS_GEM_VERSION
# Same Name Object "Chars" responce correctly
unless ’1.9’.respond_to?(:force_encoding)
String.class_eval do
begin
remove_method :chars
rescue NameError
# OK
end
end
end
# Load constants
require File.join(File.dirname(__FILE__), ’constants’)
(省略)
-----------------------------------------------------------------
んで三度のrake。
$ rake RAILS_ENV="production" db:retrospectiva:load
通ったぁぁぁ。あ、上記のCharの問題は将来的には直すそうです。
▼Webでの確認
Webからの更新用にディレクトリのパーミッションを変更します。
$ chmod 777 config/runtime attachments/ extensions/ log/
これで準備ができたのでとりあえずMongrelで動かしてみる。
# ruby script/server -e production -p 3000
クライアントからブラウザでhttp://yourhost:3000にアクセス。
>500 Internal Server Error
orz
コンソールにエラーになった箇所がずらずらと並んでいるので、
調べてみたところ、Rubyのパッチバージョンがどうもよろしくないらしい・・・。
ので・・・。
▼RoR環境の構築
結局やる羽目に。やり方自体は過去の日記を参照ください。
Ruby自身は最新パッチ版(p72)でもインストールできるんですが、
RubyGemインストール時にYamlライブラリ無いよってエラー吐くんですよね。
というわけで少しずつ遡りながらインストールしてみてます。
コメント