Windows 環境で sqlite3-ruby のインストールに失敗して分かったこと

Ruby No Comments »

自分には Windows 環境で Ruby 開発するスキルがありません。Ubuntu に行こう。うん、あそこならきっとこんな僕でも受け入れてくれるだろう。

「そうだよね、Ubuntu。」

「Yes, Master」

やることいっぱいなのに某MADのおかげで、なのは1シリーズ(13話)を一気に見てしまった。あと2シリーズもあるのか。

本題

以前のRails勉強会@名古屋 で使った環境(Windows/Java6/JRuby1.0.3/NetBeans6.0/MySQL)で、SQLite3 が使いたかったのです。勉強会ではRails2.0を使ったんですが、DBはMySQLを使っていたので、SQLite3のインストールから始めました。

Windows の場合は、「sudo apt-get install sqlite3」なんて使えないので別の方法になります。(省略)DLLを落としてきてPATHを通して終わり。簡単なことなんだけど、うん、なんでもない。

次に sqlite3-ruby を入れるんだけど NetBeansから実行しても、コマンドプロンプトから実行しても、以下のエラーが出てしまいました。

ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.

調べた結果このエラーは、ruby1.8-dev と libsqlite3-dev という2つのパッケージが存在しないと発生するそうなのですが、Windows に ruby1.8-dev をどうやっていれればいいものか・・・ましてや、libsqlite3-dev の Windows 版が見つからない。ソースからコンパイル?やってもいいけど。

ここまで来て気づいた。なんでこんな苦労しなきゃいけないんだ。

やっぱり得意なことや不得意なこと。好き嫌い。効率が良い悪い。相性が良い悪いがありますからね。

やっぱり Ubuntu で開発環境作ることにします。

====追記

先に言いますが、解決していないのでこの先はそのつもりで読んでください。くそー悔しい。

やっぱり悔しいので色々やってたのですが、Windows がごにょごにょというより、JRuby 1.1RC2 + sqlite3-ruby の問題っぽいですね。

 C:\>jruby -S gem install sqlite3-ruby
JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
Building native extensions.  This could take a while…
ERROR:  Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.

C:/dev/jruby/jruby-1.1RC2/bin/jruby.bat.exe extconf.rb install sqlite3-ruby
‘C:/dev/jruby/jruby-1.1RC2/bin/jruby.bat.exe’ は、内部コマンドまたは外部コマンド

操作可能なプログラムまたはバッチ ファイルとして認識されていません。

Gem files will remain installed in C:/dev/jruby/jruby-1.1RC2/lib/ruby/gems/1.8/g
ems/sqlite3-ruby-1.2.1 for inspection.
Results logged to C:/dev/jruby/jruby-1.1RC2/lib/ruby/gems/1.8/gems/sqlite3-ruby-
1.2.1/ext/sqlite3_api/gem_make.out

ちなみにエラーログの「jruby.bat.exe」というのは確かになくて、「jruby.bat」 なんだよね。じゃあ直接おかしかったコマンドを叩いてあげようと、gems ディレクトリまで移動してバシュっと。

C:\>cd C:\dev\jruby\jruby-1.1RC2\lib\ruby\gems\1.8\gems\sqlite3-ruby-1.2.1\ext\s
qlite3_api

C:\dev\jruby\jruby-1.1RC2\lib\ruby\gems\1.8\gems\sqlite3-ruby-1.2.1\ext\sqlite3_
api>jruby extconf.rb install sqlite3-ruby
extconf.rb:1: no such file to load — mkmf (LoadError)

出ました。mkmf ・・・。JRubyには入ってないので、ピュアRubyからmkmf.rbをコピーして再度、実行する。

 C:\dev\jruby\jruby-1.1RC2\lib\ruby\gems\1.8\gems\sqlite3-ruby-1.2.1\ext\sqlite3_
api>jruby extconf.rb install sqlite3-ruby
C:/dev/jruby/jruby-1.1RC2/lib/ruby/1.8/mkmf.rb:8: uninitialized constant Config:
:MAKEFILE_CONFIG (NameError)
from extconf.rb:1:in `require’
from extconf.rb:1

ごめんなさい。何か大きく遠回りしている気がする。眠いので寝ますZZZ

さくらのレンタルサーバに Redmine をインストール

Redmine, さくらレンタルサーバ, Ruby 7 Comments »

さくらのレンタルサーバに Redmine をインストールしたメモ

Rails 2.0 + SQLite3 で動きました。リポジトリブラウザも少しハマったけど解決して動いてます。動作は・・・さくらの共用サーバでは FastCGI や Mongrel が使えないのでさくさくではないですが我慢できる範囲だと思います。

初期設定編を書きました。(2008/03/21 追記) : Redmine の初期設定(インストール後にすること)

redMine って先頭小文字で m 大文字の人が非常に多いんだけど、Redmine でいいんですよね?

本家サイト : http://www.redmine.org/

環境

  • さくらのレンタルサーバ スタンダード
  • Ruby 1.8.6
  • RubyGem 1.0.1 (あんま関係ないかもしんないけど)
  • Rails 2.0.2
  • Subversion 1.4.3
  • SQLite3 3.3.17 (MySQL は WordPressで使っているため)

$HOME/rails に入れて 最後に $HOME/www にシンボリックリンクを作ります。vim がない場合は、vi でどうぞ。

チェックアウト

cd $HOME/rails
mkdir redmine
cd redmine
svn checkout svn://rubyforge.org/var/svn/redmine/trunk .

パーミッション設定

cd $HOME/rails/redmine/
chmod o+w tmp log

Apache 実行ユーザから書き込めるように

DB 設定 config/database.yml 作成

cd $HOME/rails/redmine/config/
cp database.yml.example database.yml
vim database.yml

これを

production:
adapter: mysql
database: redmine
host: localhost
username: root
password:

こうする

production:
adapter: sqlite3
dbfile: db/redmine.db

DB 作成と初期データのロード

rake db:migrate RAILS_ENV=”production”
rake load_default_data RAILS_ENV=”production”

言語を聞かれるので ja を入力

環境設定 config/environment.rb 編集

cd $HOME/rails/redmine/config/
vim environment.rb

これを

# SMTP server configuration
config.action_mailer.smtp_settings = {
:address => “127.0.0.1″,
:port => 25,
:domain => “somenet.foo”,
:authentication => :login,
:user_name => “redmine”,
:password => “redmine”,
}

こうする

# SMTP server configuration
config.action_mailer.smtp_settings = {
:address => “さくらアカウント.sakura.ne.jp”,
:port => 587,
:domain => “
さくらアカウント.sakura.ne.jp”,
:authentication => :login,
:user_name => “hogehoge@
さくらアカウント.sakura.ne.jp”,
:password => “上記メールアドレスのパスワード”,

}

一番上に以下も追記(もちろん先頭の数字はいらないよ!)

1. $LOAD_PATH.push(”rubyのインストールディレクトリ/lib/ruby/site_ruby/1.8″)
2. $LOAD_PATH.push(”rubyのインストールディレクトリ/lib/ruby”)
3. ENV[’GEM_HOME’] ||= ‘rubyのインストールディレクトリ/lib/ruby/gems/1.8′
4. ENV[’PATH’] += ‘:/home/さくらアカウント/local/bin’

がんちゃんのブログ: さくらのレンタルサーバーにRuby on Railsをインストールする方法 その2

を参考に1.~3.を追記。あなたの環境に合わせて設定してください。Apacheユーザからの CGI 経由で動くので環境変数「RUBYLIB」と「GEM_HOME」をここで教えてあげる。

もちろん 「GEM_HOME」もあなたの環境に合わせてください。

4. の環境変数「PATH」には svn コマンドへのパスを追加します。これをしないと Redmine でリポジトリブラウザを見ようとした時に「リポジトリに、エントリ/リビジョンが存在しません。」というエラーメッセージが出ます。半日悩みました。。。

CGI 設定 public/dispatch.cgi の作成

cd $HOME/rails/redmine/public/
cp dispatch.cgi.example dispatch.cgi
vim dispatch.cgi

これを

#!/usr/bin/ruby

require File.dirname(__FILE__) + “/../config/environment” unless defined?(RAILS_ROOT)

こうする

#!rubyのインストールディレクトリ/bin/ruby
ENV[’RAILS_ENV’] ||= ‘production’

require File.dirname(__FILE__) + “/../config/environment” unless defined?(RAILS_ROOT)

「#!/usr/bin/ruby」 のままだと「Application error ails application failed to start properly”」 という以下の画面が出てしまいます。

Application error ails application failed to start properly

数分悩んだあげく、自分でインストールしたrubyを見させるようにすると上手くいったので今の所これで動かしています。

public/.htaccess の編集

vim $HOME/rails/redmine/public/.htaccess
11行目をコメントアウト
Options +FollowSymLinks +ExecCGI

#Options +FollowSymLinks +ExecCGI

シンボリックリンクの作成

ln -s $HOME/rails/redmine/public $HOME/www/redmine

ブラウザからチェック
http://さくらアカウント.sakura.ne.jp/redmine/

トップページが無事表示されましたか?お疲れ様でした。
インストールが完了したら初期設定に移りたい所ですが、ちょっと長くなったので一旦ここまでにしてコーヒーでも飲みましょう。

先に知りたいという人は以下が詳しいです。

Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!:第2回 環境構築/redMineのインストール・初期設定|gihyo.jp … 技術評論社

ふりかえり

CGIで動作しているので、Apache実行ユーザが Redmine を動かしているというイメージを持っていないと自分みたいに問題発生時に時間がかかってしまいます。特に、「リポジトリに、エントリ/リビジョンが存在しません。」エラーには悩まされました。

結果的に「environment.rb で ENV[’PATH’] += ‘:/home/さくらアカウント/local/bin’」で解決したんだけど、他に影響がないかは今後使い続けて何かあれば報告します。

初期設定編を書きました。(2008/03/21 追記) : Redmine の初期設定(インストール後にすること)

Basecamp のテストコードはソースコードの 1.2 倍

Ruby No Comments »

Ask 37signals: How do you document code? - (37signals)

Basecamp has a 1:1.2 ratio of test code (thanks to the persistence of Jamis!), Highrise has a ratio of 1:0.8 (bad me!).

Basecamp は 1 : 1.2 ぐらいの割合でテストコードを書いているよ。 Highrise(これまた 37signals のプロダクト)は 1 : 0.8 (僕はだめだ!)

だめじゃないよ David ! あなたは素敵だよ!

Our biggest product, Basecamp, is about 10,000 lines of code.

Basecamp はだいたい 1万ラインぐらいのソースコードで出来ている。

ジェネレート分を省いて計測するのは難しいだろうから、だいたいなんだろうけど。ちなみに先週ぐらいから Free 版で遊んでます。 Writeboard って文章が書ける機能は2つまでしかドキュメントを保存できないので悲しいです。

ちなみに、37signals は質問募集中らしいです。件名に “Ask 37signals” と書いて、(もちろん本文も英語でね!)メールを送ると、ブログで返事を書いてくれるかも。英語わかんねぇぇぇ

ちなみに2、リンク先のエントリーの主題はドキュメントコード(多分コメント文とか)の話なんですが、ところどころしか意味が拾えなくて紹介できずにごめんなさい。誰かざっくり教えてー。

Rails より早い(?)らしい Ruby フレームワーク「Merb」

Ruby No Comments »

Rails 勉強会に行った直後に、なんなんですが「Merb」という Ruby フレームワークがあるのを今日知りました。

本家 : Merb | Looking for a better framework?
詳しい 日本語エントリー : floatingdays: Railsよりお薦め!Rubyのフレームワーク Merb (Mongrel + Erb) をインストール

他にも Ruby フレームワークないかなーと調べると 、10個の Ruby フレームワークをまとめてるエントリー発見(英語だよぉぉぉ。)

10 Alternative Ruby Web Frameworks « Accidental Technologist

時間が出来たらまずは Merb から試していきたいなー。

第1回イケテルRails勉強会@名古屋に行ってきました。

Ruby, 雑記 7 Comments »

2月2日(土)のRBC/JavaEdgeコラボ企画「イケテルRails勉強会@名古屋」に行ってきました。

勉強会

前日にわくわくし過ぎて眠れなくて(子供か!)、案の定当日に寝坊してしまいました!もう泣きそうになりながら大急ぎで家を出て、勉強会開始から約1時間半遅れで到着した自分に同じチームに組まれていた方が、「大丈夫です!お昼までに追いつきましょう!」と言って下さって、本当に優しくて涙でそうでした。

内容としては、 NetBeans6.0/JRuby1.0.3/Ruby on Rails 2.0/MySQLの環境構築から始まって、有名Railsのscaffoldを試して、Calendar Helper Plugin のインストールから簡単な使い方、そして scaffoldで作ったModelのデータを Calendar Helper Plugin と連携(検索したデータをカレンダーに表示)と盛りだくさん。

途中に Rails プラグインの作り方(”Hello Nagoya”を返すヘルパーメソッドだけ実装)などを勉強させてもらいました!

勉強会の内容も素晴らしいですが運営の方々、参加している方々の雰囲気が良かったです。内容が濃ーーくて後半みなさん疲れてましたが人間なので許してくださいw

懇親会

最首さんの熱ーーい話も聞けたし、参加者の方々とたくさんお話ができました。特に近くに座っていた id:yuko1658 さんや、ずっとフリーのWeb屋さん、そしてFirefox の エバンジェリスト (evangelist) さん、などなどと濃いー話をありがとうございました。尊敬するS氏にも「コミュニティを経験したほうが良いよ。」と言われていましたが、こういったコミュニティはぜひ参加すべし!そして、懇親会はぜひ参加するべし!今後は参加するだけでなく、何かアップできるように頑張りたいです。

最後に

RBC最高!イケテルRails勉強会@名古屋最高!以上。

NetBeans 6.0 Ruby Gems の Out Of Memory 解決方法

Ruby No Comments »

環境変数「JRUBY_EXTRA_VM_ARGS」に「-Xmx512m」を設定して、NetBeans を再起動して解決。

512m は、お好みで。けど、JRuby が悪いのか NetBeans 6.0 上の Ruby Gems が悪いのか分からないけど、結構メモリを食うみたいなので多めで。

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン