2011年6月26日日曜日

rails3とrake; 0.9.2 => 0.8.7

rails3の学習にて。modelの作成後にrake db:migrateを実行してエラー発生。
エラー内容は次のとおり。
uninitialized constant Rake::DSL

エラーメッセージをweb検索にかけると、掲示板サイトでakeのバージョンに関する記述を発見。
ver0.9.1に問題があるらしいということで、0.8.7にバージョンダウンしろとある。

早速実践。
◆方法 railsアプリのGemfile内に以下の記述を追加
◆追加 gem "rake", "0.8.7"

上記の記述後、再度rake db:migrateを実行。
今度はエラーメッセージが次のものに変わった。

You have requested:
rake = 0.8.7

The bundle currently has rake locked at 0.9.2.
Try running `bundle update rake`
Run `bundle install` to install missing gems.

rakeのバージョンがまだ0.9.2のようなので、以下のコマンドを投入。
sudo bundle update rake

これでrakeには0.8.7が使用されることになったことがメッセージから確認できるので、rake db:migrateを実行。
今度は無事にテーブルが作成できた。

2011年6月20日月曜日

gemとzlibとSinatra; インストールのタイミング?

Rubyは導入できたので、今度はWebフレームワークSinatraを入れる。大分以前の状態に戻りつつある。
しかし無情なエラーは続く。

gem install sinatra => no such file ... zlib

これも以前引っかかった気がする。調べると、zlib-develが必要らしいという情報があるものの、aptitudeにはそれらしいパッケージがない。気がする。一応いくつかのdevなどの文字が見えるzlib関連パッケージを入れて、gemを実行してみるがうまくいかない。

zlibの公式でソースをもらってきてコンパイル後、再度gem。これもダメ。

一通り思い当たるものを入れ終わったので、念のためRubyの方をconfigureからmakeしなおす。

そうしたら無事に通った。
んー、gemをビルドしたタイミングで必要なライブラリがないと、ずっと参照できない状態になるってことなのかな。

Sinatraのサンプルコードを書いたファイルを起動...無事Hello Worldしてくれた。

aptitudeとRuby; バージョン入力が省けない

aptitudeを使用してパッケージ指定で入れていたところ、rubyがバージョン番号まで入れないと起動できない状態に。
aliasしてみたところ、irbなどは問題がなさそう。しかしsudoしてファイルを実行をしたらエラーが。

alias ruby='ruby1.9.1'
alias irb='irb1.9.1'

irb => ok
sudo ruby test.rb => ファイル名が見つかりません

次にファイル名をリネームしてナンバリング部分を無理やりなくしてみたが、これも別の形でエラーになった。
仕方ないので一旦全部削除し、ソースをコンパイルして入れることにした。
(というか以前のエントリで同じことをやっていたような)

最後にpathを通して終了。
export PATH=$PATH:追加するディレクトリ名

Debian6.0 Squeeze再; 無線LANをもう一度...OK

環境が2点3点して、Debian Squeezeに戻ってみた。
少しずつlinuxの勘どころが分かってきた今日この頃、無線LANの設定も無事完了。
以前引っかかったところなので、念のため備忘。


◆使用しているデバイス:Intel Wireless WiFi Link 5300AGN
◆確認事項:Ubuntu10.10でアクセスポイントに設定されていた「SSISの隠蔽」を外すと繋がったということがあったので、
以下の手順で繋がらない時は必ずアクセスポイント側の設定を見直すこと。

1. まずここでドライバを取得

2. セットのreadmeファイルを参考に、ファームウェアの設定ファイル名を調査
=> /lib/udev/firmware.agent

3. 手順2のファイルに記述されているFIRMWARE用ディレクトリに手順1のドライバを保存
=> /lib/firmware

4. システム => 設定 => ネットワーク接続 からSSISなどの情報を設定する

5. 後はここのSqueeze用の記述を参照し、コマンドを投下すれば...OK

ようやくまともに使えそうで嬉しいよ

2011年5月23日月曜日

解決solved !; LoadError - no such file to load -- openssl

linuxでrailsの学習を始めてすぐに、opensslが見つからないという壁にぶち当たり、windowsに逃避していたのだけれど、つい先日無線LANが繋げるようになったので一念発起して再挑戦。
そして同じエラーに行き当たる・・・

LoadError (no such file to load -- openssl):

とりあえず解決策を探しつつ、試してみたものとしては、
・apt(aptitude)でopenssl関連のライブラリ・ヘッダファイルを手当たり次第にインストール
=> openssl, libopenssl-ruby1.9.1, libssl-devなど。
・rubyのopensssl.rbが見えてない?のかと思い、exportでPATHを設定してみる。

他にもごちゃごちゃと弄ったけど、細かいところはうろ覚え。

一旦諦めたものの、夕飯を食べたら気がちょっとだけ持ち直したので、駄目もとで挑戦。
そしてついに、この辺のフォーラムの情報を元に、解決に至ることができた。

同じような情報はいくつも見ていたのだけど、分からないときはとことん分からないもので。気付きというかインスピレーションは大事だと実感。曲がりなりにも経験を積んできたというのもあるのだろうけど。

たしか次のような流れだったかと。

cd /home/user/download/ruby1.9.2-p180/ext/openssl
make clean
ruby extconf.rb
make
make install

makeコマンドとextconf.rbがよく分かってないのもあるけど、結局これをやる前と後で何が違ったのだろう。
一連の流れの中で、make cleanは使用していない解説も結構あったので、必須だったのかは不明。

何にしろこれで再スタートがきれそう。

2011年5月22日日曜日

無線LAN;繋がっ・・・た???

Ubuntu環境で相も変わらず無線に繋げず。
新しく職場に来た方がサーバ系に詳しいので色々と聞いてみた。
見るべきポイントが随分沢山あるもので。これは期待。

帰宅後に早速調査。
・・・んー環境が違うせいもあるか、ディレクトリもファイルも見つからないものが少なくない。
調べるのが億劫だなぁと夜勤明けの頭でげんなりしつつも、これまでに試した方法についても念のため確認してみる。

アクセスポイント側の設定を見ているときにふと気づく。これは試したことないけど・・・やってみようかなと、ある設定を変更。
ネットワークマネージャを立ち上げ、再度設定。
・・・繋がった。

どこの設定かというと、「SSIDの隠蔽」(any接続)に関するもの。
隠蔽状態を解除したところ、あっさり繋がってしまった。
試しもせずに諦めるなってことなのか。

なんにせよ、これで少しは溜飲が下がろうというもの。
リブートしたらまた繋がらないとかなければいいけど。

2011年4月13日水曜日

Ruby on Railsへの再挑戦

ここのところJavaScriptでGoogle Mapをいじってみたり、Ajaxの基礎を学習していたのだけど、XMLHTTPrequestを学ぶに当たってサーバ側もやらなくてはなあと感じてRailsに戻ってみることに。
とりあえず初っ端からつまずいたので、備忘にログを残しておく。

■問題の発生箇所
//railsのインストール後、serverが起動できない。
user@user-PC:~/development/gitwork/depot$ rails server
Could not find gem 'mysql2 (>= 0, runtime)' in any of the gem sources listed in your Gemfile.

エラーメッセージを元にWebを検索するも、いまひとつどこが問題かはっきりしない。
その後半ば勘だよりで"libmysqlclient16-dev"のインストールを行ったところ、bundle installコマンドが無事に通った。

■以下、ログ
user@user-PC:~/development/gitwork/depot$ sudo apt-get install libmysqlclient16-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
libmysqlclient-dev
以下のパッケージが新たにインストールされます:
libmysqlclient-dev libmysqlclient16-dev
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
3,166kB のアーカイブを取得する必要があります。
この操作後に追加で 8,380kB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ maverick-updates/main libmysqlclient-dev i386 5.1.49-1ubuntu8.1 [3,106kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ maverick-updates/main libmysqlclient16-dev all 5.1.49-1ubuntu8.1 [60.6kB]
3,166kB を 1秒 で取得しました (2,531kB/s)
未選択パッケージ libmysqlclient-dev を選択しています。
(データベースを読み込んでいます ... 現在 166455 個のファイルとディレクトリがインストールされています。)
(.../libmysqlclient-dev_5.1.49-1ubuntu8.1_i386.deb から) libmysqlclient-dev を展開しています...
未選択パッケージ libmysqlclient16-dev を選択しています。
(.../libmysqlclient16-dev_5.1.49-1ubuntu8.1_all.deb から) libmysqlclient16-dev を展開しています...
man-db のトリガを処理しています ...
libmysqlclient-dev (5.1.49-1ubuntu8.1) を設定しています ...
libmysqlclient16-dev (5.1.49-1ubuntu8.1) を設定しています ...
user@user-PC:~/development/gitwork/depot$
user@user-PC:~/development/gitwork/depot$
user@user-PC:~/development/gitwork/depot$ sudo bundle install
Fetching source index for http://rubygems.org/
Using rake (0.8.7)
Using abstract (1.0.0)
Using activesupport (3.0.6)
Using builder (2.1.2)
Using i18n (0.5.0)
Using activemodel (3.0.6)
Using erubis (2.6.6)
Using rack (1.2.2)
Using rack-mount (0.6.14)
Using rack-test (0.5.7)
Using tzinfo (0.3.26)
Using actionpack (3.0.6)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.9)
Using mail (2.2.15)
Using actionmailer (3.0.6)
Using arel (2.0.9)
Using activerecord (3.0.6)
Using activeresource (3.0.6)
Using bundler (1.0.12)
Installing mysql2 (0.2.7) with native extensions
Using thor (0.14.6)
Using railties (3.0.6)
Using rails (3.0.6)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
user@user-PC:~/development/gitwork/depot$

そうしたらrails serverが機能。とりあえず良かった。
続いて立ち上げたローカルサーバにアクセスし、ページを表示させる。
About your application's environmentをクリックすると、今度はMysql2のエラー。アクセスが拒否されたらしい。
database.ymlファイルの設定に問題があるようなので、調整。
確かにpasswordが設定されていない、が、根本的な問題はアクセス先に指定されているデータベースがmysql上に存在していないことにあるっぽい。
mysqlクライアントからデータベースを作成後、再度アクセス。

今度は別のエラー。
ArgumentError (syntax error on line 15, col 2: ` socket: /var/run/mysqld/mysqld.sock')

調べる前に記録をとっていたが、再度アクセスしたら難なく動作した。とりあえず良とする。
その後、rakeコマンドでエラーが多発。そのうち公式のHPと参考書をちゃんぽんにしてコマンドを実行していたら、mysqlへのアクセスにパスワードが不要になってしまった。
よくよく公式を読んでみると、rake db:createコマンドはdatabase.ymlファイルの記述を利用してデータベースを作成しているように見える。(rake -Tでヘルプを出したところ、間違いないことが確認できた)
最終的にdatabase.ymlからパスワードを削除してからコマンドを実行した時のログが以下のもの。

user@user-PC:~/development/gitwork/exam$ rake db:create
(in /home/hiroshi/development/gitwork/exam)
exam_test already exists
exam_development already exists

ymlファイルのpasswordのエントリが空だったから、パスワードが不要になったということか。しかしymlファイルの記述はデータベースに紐続けられているように思えるが、そもそもパスワードってデータベース単位で設定できるのかよく分かっていなかったりする。
これも調べておかないと。