| @技術/プログラミング

Rubyいいっすわ。あんまり詳しいことは tech.portalshit.net に書きますけど、Rubyいいっすわ。Rubyの何が良いってオブジェクト指向なのがいいっすわ。あと無駄な括弧やセミコロンが必要ないのもいいっすわ。配列の操作、ブロックとかがいいっすわ。Procとかまだよく分かってないけど、とても便利っぽいものなにおいがぷんぷん漂ってくるのがいいっすわ。全般的に「こういうのPHPでやりたかった」っていうのがたくさんあってとても助かる感じです。

残念なのは、ターミナルの操作にある程度慣れてないと、最初の環境構築でつまずくところかな。RubyGemsインストールして、必要なGemをインストールして、ってやらないとなかなか使えるようにならない。あとレンタルサーバーで気軽に使えないのが痛いかな。PHPは大抵のサーバーに入ってるし、ターミナルの知識なくても、HTMLの拡張子をPHPに変えて、テキトーに <?php ?> で囲んで何か書いてサーバーにアップロードすればとりあえずスクリプトを動かすことができるので、簡単に始められるのが良いですよね。RubyはApacheで動かそうとするとhttpd.confいじる必要があるので、なかなか簡単には使い始められない。

というかですね、PHPは動的HTMLを生成するためのテンプレートエンジンなんだと思う。どっちかつったらプログラミング言語っつーよりもウェブアプリケーションフレームワークでいうならビューに特化したマークアップ言語なイメージ。だから小規模な動的WebサイトだったらPHPはとても良いと思う。DBとか使わなくて、MVCとか分ける必要のないサイトとか。

ただライブラリとか使って複雑なことやるんだったら他の言語の方が良いと思う。PEARとかPECLとか便利なのか不便なのかよく分かんないし。

以上、Ruby on Railsの手術を受けて洗脳されている最中のおっさんの戯れ言でした。

そういや、今月下旬に友達の結婚式で東京行くのでRubyKaigi行きます。もし会場で僕を見かけたら生卵とか投げつけないで一緒にご飯食べたりしてあげて下しあ。

| @技術/プログラミング

AuthlogicとAuthlogic-OAuthでキメてやろうと思ってたのに全然うまくいかないし。Authlogic-OAuth、去年から全然更新されてないじゃん。Railsは便利なプラグインいっぱいあるけど、メンテが止まってることも多い。プラグインに頼りまくってサイト作ってると死ぬこともあるなーと思った。やりたいことは自分でもやれるようにしとく必要あるし、自分の手に余ることはやろうとしない方がいいと思った。できるところからコツコツと、と37シグナルズの本にも書いてあるし。

| @技術/プログラミング

RailsでOAuthを使ってTwitterとかで認証させたい。oauth-pluginを使おうとしてるけど全然うまくいかない。イメージとしてはこんな感じ。

OAuthの利用イメージ

疑問点がいくつかある。

  • Userモデルで validate_presence_of をパスワードフィールドにかけてるけど、OAuth経由でユーザーが追加されたときはどうすればいいんだろう。OAuth経由ではパスワードは預からないので、 validate_presence_of でエラーが出るはず。

  • Userモデルで has_many :oauth_tokens とかリレーションの設定をしてしまったとして、OAuth経由ではなく普通にサインアップしたユーザーの扱いはどうなるんだろう? 「 oauth_tokens にそんな user_id の人いないし」みたいなエラーが出るような気がする。

他にもいろいろ気になる点があったような気がするけど分からなくなってしまった。

| @技術/プログラミング

『RailsによるアジャイルWebアプリケーション開発 第三版』をまだちまちま読んでる。いまActiveRecordのリレーションシップのところ。全然分からなくて全然進まない。もうRails 3.0が出そうだというのに。またろくすっぽ技術書を読まないうちに化石になっちゃいそうだよ。バカはつらいよ。

| @技術/プログラミング

初期データをマイグレーションでRailsアプリケーションにぶっ込んでみた。後からいちいち手入力するのめんどいし、マイグレーションでデータをロードしとけば、本番環境でうごかすときも rake db:migrate で初期データは入るはずだから楽ちんかなと思って。

結果的には無事データをロード出来たんだけど、YAMLの書式が分かってなくて、結局丸一日時間を費やしてしまった。大したデータ量じゃなかったから下手するとちまちま手入力するのと変わらないくらい時間かかったかも。

hoge: #アイテムの名前
  id: 1
  name: "hoge"
  address: "ホゲ県ホゲ村ホゲホゲ"

fuga:
  id: 2
  name: "fuga"
  address: "ホゲ県ホゲ村フガフガ"

とかやんなきゃいけなかったんだけど、YAMLの書き方が分かってなくて、

hoge:
  id: 1
  name: "hoge"
  address: "ホゲ県ホゲ村ホゲホゲ"

  id: 2
  name: "fuga"
  address: "ホゲ県ホゲ村フガフガ"

とか書いてた。どっちも hoge県 に分類されるんでこんなんでいいだろ、みたいなノリ。しかしこれはやっぱり文書の構造がおかしい。これをロードしてみると、 id=2 のものしかロードされなかった。

結局、拾ってきた コードを参考にして

require 'yaml'
require 'pp'

data = YAML.load_file('hoge.yml')
pp data

みたいなやつを書いて、読み込まれる配列の構造を確認しながらYAMLを書いたところうまくいった。

| @技術/プログラミング

RailsアプリケーションでMarkdownを使いたと思った。(Markdown大好きっ子なので)

調べてみたところ、 BlueCloth というライブラリを使うといいらしい。

これはRailsのプラグインではないのでgemでインストール。

$ sudo gem install bluecloth

その後viewで

<%= markdwon(@item.text) %>

とか書けばいい。

しかしなんも設定しない状態だとRailsアプリケーションはBlueClothを読み込まないので、config/environment.rb

config.gem "bluecloth"

と書いてやる。するとめでたくMarkdownが使えるようになる。

| @技術/プログラミング

XREAでRailsを使おうと思っていろいろ調べてみた。Railsは rake rails:freeze:gems してアップロードすればオッケーらしいんだけど、RubyGemsはインストールしないといけないみたい。ところがネットに乗ってる情報を参考にインストールしてみたけど全然うまくいかなかった。指示通りにやってるんだけどパスが通らないのか、インストールしても 'rubygemsをrequireできねーぞゴラ!' みたいなエラーが出る。

.profile で記述した GEM_HOMERUBY_LIB のパスは間違ってないと思うんだけど、何回やっても $HOME/lib/ 直下にRubyGems系のファイルが展開されてしまう。これがエラーの原因っぽい。しょうがないので力業で guantlet_rubygems.rb, rbconfig/ rubygems/ rubygems.rb, ubygems.rb$HOME/lib/ruby/site_ruby/1.8 に移動させた。その後 source ~/.profile して適当な場所で gem -v してみたところ、ちゃんと 1.3.5 と表示された。

蛇足だけど最初、RubyGems 1.3.7をインストールしようとしたら、利用予定地のサーバーのRubyのバージョンが1.8.5なためにインストールできなかった。そういうわけでRubyGemsは1.3.5を入れた。

あとRubyGemsが入ったからといってシェルで gem install rails とかやってもプロセスを kill されるっぽいのでよい子のみなさんは必要な gem は自分のパソコンでインストールしてからアップロードした方がよさげです。