便利そうなRubyGemsをぶっつけで使ってみる実況動画GemCasts。3回目はRSSやAtomのAutoDiscoveryをやってくれるrFeedFinderを試してみました。
3分です。短いッス。
何かよさそうなGemあったら教えてくださいー。
追記:
実況動画はこっち(GemCasts.org)へ移しました。
便利そうなRubyGemsをぶっつけで使ってみる実況動画GemCasts。3回目はRSSやAtomのAutoDiscoveryをやってくれるrFeedFinderを試してみました。
3分です。短いッス。
何かよさそうなGemあったら教えてくださいー。
追記:
実況動画はこっち(GemCasts.org)へ移しました。
MovableTypeは4.1でさらに高機能になり、テンプレートが高度に構造化されたため、徹底的にDRYにテンプレートを書けるようになっています。さらにCMS的にブログ記事以外のページも自由に作れるようになり、そちらにも構造化されたテンプレートが利用できます。
僕は大東亜戦争従軍記というブログを次のようにしたいと考えました。
手持ちのMovableType4.1で実現しようと思いました。別のブログを4.1にバージョンアップした経験から、「これは容易ならざる事になった」と思い、4.1対応の書籍を買ってきました。
1時間後、その書籍はゴミ箱の中に納まっていた。
この構造化されたテンプレート、CSSクラス、MTテンプレート記法を覚えた上で、おそらく本体かプラグインのあの懐かしい(しかし昔とは違って進化したモダンな)Perlの海に潜らなければならないだろう。
MTには元StyleCatcherと呼ばれた、他人の作ったテンプレートとスタイルを簡単に自分のブログに当てはめる機能がある。CMS化した4.1に対応したテーマを血眼で捜したが、無かった。
やはりデザイナーにとってもあの高度化したテンプレートに対応したテーマを作るのは容易ならざることに違いない。
次の日、デザイナーの人に相談すると、WordPressをすすめられ、簡単な使い方を習った。
次の日、1人月はかかると思っていたブログのリニューアルが完成した。(趣味なのでかかってもいいんだけど)
特にテンプレートのsql文字列と思われるところに”order by xxx_id”“を追加しただけで記事が古い順に並んだのは痛快だった。
またK-tai styleというプラグインを入れただけで僕のE-Mobileも含めた全キャリア対応になったのにはびっくりした。
sideber.php, footer.php, category.php、実に分かりやすい。
WordPressが大好きになってしまった。
フリーになるとオープンソースをちょっとカスタマイズとか出来ると楽できていいですよね。
そうなるとPHPは外せないわけで、ちょこちょこPHPで出来たオープンソースソフトウェアを弄るわけですが、大規模開発とかSIer向けとかとは違った、OSSのWebアプリに向いた設計があることに気が付きました。
具体的にはWordPressの作者の人(?)がもっと設計を洗練させて作ったというbbPressというフォーラムのソフトがあるんですが、これのソースを見たとき、
「うは、なるほど。やられた。この人はわかっちょる。」
とちょっとショックを受けました。
とりあえずタイトルに対する結論から列挙しますと、(bbPressですが)
作者はとにかく「サードパーティー開発者」と「ユーザー」に奉仕して、DRYに反していても誰にでもわかりやすいまま頑張ってスパゲッティにならないようにします。
より多くの「サードパーティー開発者」に気に入ってもらえるようにすることがひいてはプラグインの増加、ソフト自身の価値向上につながるんですね。
この構造の明快さだけでこのアプリのファンになってしまいました。
ただ、裾野が広すぎると、実際に何度も起こっているようにプラグインでSQL Injectionを作りこんでしまう可能性が高いのは何とかしないとまずいですね。プラグインの中でプレースフォルダ使ってない部分があったら警告表示するとか、できないかな?
ActiveRecord拡張とかRails系の
「プラグインにする程でもないけどいつも使う奴」
を2.xからはconfig/initializers/に置いとけば良くなって、みんな多分、rails_ext.rbとか名前付けてんじゃないかな?
何か、すげー便利なrails_ext.rbを隠し持ってる人が全国に沢山いるような気がしてならない!
みなさん自分のrails_ext.rb(に類する奴)を公開してくれませんかー! もしよければトラックバックかコメントください。
おれのはまだヘボイんですが参考までに置いておきます。
module ActiveRecord::ConnectionAdapters::SchemaStatements
def foreign_key(from_table, from_column, to_table)
constraint_name = "fk_#{from_table}_#{to_table}"
execute "alter table #{from_table} add constraint \
#{constraint_name} foreign key (#{from_column}) references #{to_table}(id)"
end
def set_autoincrement_number(table_name, number)
execute "ALTER TABLE #{quote_table_name(table_name)} AUTO_INCREMENT=#{number}"
end
def load_fixture(fixture, dir = "test/fixtures")
require "active_record/fixtures"
Fixtures.create_fixtures(dir, fixture)
end
end
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
:short_jp => "%m月%d日",
:long_jp => "%Y年%m月%d日"
)
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
:short_jp => "%m月%d日 %H時%M分",
:long_jp => "%Y年%m月%d日 %H時%M分"
)
ちょっとRailsのオープンソース系の漁ってきます。
fixtureがcsvでも良いことをしったのでmigration内で初期データをfixtureからロードできるようにしました。(見ての通りFixtures.create_fixturesってのがあるんだけどrequireとかが面倒なので。
config/initializers/rails_ext.rbとかに下記を書く。
module ActiveRecord::ConnectionAdapters::SchemaStatements
def load_fixture(fixture, dir = "test/fixtures")
require "active_record/fixtures"
Fixtures.create_fixtures(dir, fixture)
end
end
これでこんな感じで書ける。
class CreatePrefectures < ActiveRecord::Migration
def self.up
create_table :prefectures do |t|
t.references :region
t.string :name
t.string :reading
t.string :roman
end
<strong>load_fixture :prefectures</strong>
end
def self.down
drop_table :prefectures
end
end
やっぱり都道府県名とか、csvで管理したほうが絶対良くない?(load_fixtureはymlでもOKだけど)
Shouldaをautotestで使ったときがっかりなエラーが出る問題は、
# /usr/lib/ruby/1.8/test/unit/autorunner.rb:138
#@filters << proc{|t| n =~ t.method_name ? true : nil}
@filters << proc{|t| n =~ t.method_name.to_s ? true : nil}
で直るみたいです。
test_helper.rb見てて知ったんだけど、fixtureってcsvでも良いって知ってた?
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
#
# Note: You'll currently still have to declare fixtures explicitly in integration tests
# -- they do not yet inherit this setting
おいおいおいおーい、知ってたんだったら早く言ってくれよ! テストデータってExcelやCalcの方が絶対書きやすいよね。
っていうかさ、凄い遅くていいんだけどCSVへのSQLのインターフェースって無いかな?
いえね、さっき(27時過ぎ)家に向かって初台の方から帰ってきたんですよ。
細い裏道なんで本当に真っ暗で。でも慣れた道なんで特に気にもせず歩いてたんですが、いきなり目の前に北欧系の男女が。
男の方は細くてかなりの長身。女の方はEvanescenceみたいな顔して凄い怖いんですよ。
本当に何にもない路地の壁に寄りかかって座ってる。男の方はめっちゃ俺の方みながら何か喋ってるし、女の方はあぐらかいて黒いノートパソコンをじっと見てる。二人ともラフな格好なんだけど真っ黒い服きてるからノートパソコンのライトに照らされてる顔の辺り以外よく見えない。かなり近づくまで気付かなかったのでビビッた。
結構でかかったから黒のMacBookかもしれない。
初台・幡ヶ谷近辺って新宿中央公園からそれほど遠くないので深夜から朝方にかけて浮浪者がかなりうろつく。女性の一人歩きとかはマジお勧めできない。
そんな中、何やってんだよあのユニット!深夜にあそこでノートパソコンで作業する意味がわかんねーよ!!
・・・・・・。
ところでおまえ、スポーツはやるのか? スポーツはいいぞ。 おれの話はこれで終わりだ。
Railsで ./script/plugin install will_paginate したらこんなメッセージが、
WILL PAGINATE MOVED TO GITHUB. This repository is no longer updated. It's recommended that you install the gem instead of a Rails plugin: gem install will_paginate The new repository is at: http://github.com/mislav/will_paginate We have some wiki documentation, also: http://github.com/mislav/will_paginate/wikis There you can find extensive installation instructions. Have a nice day! -- Mislav
GITHUBに移ったんすね。アップとかしたこと無いけど最近の使われっぷり、どんだけ魅力的なんだよ!GITHUB。
それと、gemでrails plugin入るの?すごい楽でいいんだけどRaPTの(まだよくわかってないけど)の存在意義は?
利用するplugin gemのバージョンとかはどうやって指定すんだろ。どっちにしろ喜ばしいッス。
たけくまメモ : あなたはどの女性がお好みですか?
ネットサーフィンしていて見つけたイスラム教のお見合いサイトの写真です。俺は、中段右から2番目の女性が好みです。はっきりと断定することはできませんが、もしかするとリア・ディゾンに似ているような気がしないでもありません。
わかんねーよwww
全員アサシンにしか見えない!!