Archive for category Ruby on Rails

Radiant CMSのExtensionを作る – モデル追加湯けむり旅情篇

目次

セットアップ

radiantはgemで入れる。2010年7月現在、バージョン0.9.1が入るはず。

1
sudo gem install radiant

0.9.1は比較的安定している模様なので、今回はこれをベースに開発する。

今回は「お小遣い帳をCMSに追加する」エクステンションを開発する。

Read the rest of this entry »

 

returning は死んだ。 Object#tap を使おう

標記のとおり、死ぬみたいです。

crankharder

I’m curious to know what the rational is behind this?

rohit

You can now use tap.

正論過ぎて返す言葉もありませんね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require "rubygems"
require "active_support"
 
a1 = returning [] do |ary|
  ary << 'hoge'
  ary << 'fuga'
end
 
a2 = [].tap do |ary|
  ary << 'hoge'
  ary << 'fuga'
end
 
require "spec"
a1.should == a2
#=> true

確かに、タイピング量的にも、tapの方が少なくなりますね。でも、1.8.6みたいにtapのバックポートが無い場合とか、あとreturningを使いまくってる場合は…。

そもそもtapもreturningも4行ぐらいで実装できるので、以下のような config/initializers/returning_strikes_back.rb を作成すれば互換性を確保できるんじゃあないでしょうか。あまり薦めませんが。。

1
2
3
4
5
6
7
8
9
10
module ReturningStrikesBack
  def returning(value)
    yield(value)
    value
  end
end
 
class Object
  include ReturningStrikesBack
end

 

Nginx+Passengerで、 / と /hoge に別々のRails appをデプロイする

単純に /hoge と /fuga に別々のアプリケーションをdeployするのなら、話は単純で、以下のチュートリアルのとおりなんですが。

問題は passenger_base_uri に「/」を指定できないこと。

方針としては、「/」のアプリケーションと「/hoge」のアプリケーションは別々のポートで配備して、かつ「/」をデプロイした側から、リバースプロキシで「/hoge」に飛ばしてあげる、という感じです。Pound辺りと組み合わせてもいいんですが、Nginxだけで完結できます。

Read the rest of this entry »

 

Ubuntuに、passenger-install-nginx-moduleした

Ubuntuは、aptitudeでNginxが入るんだけど、Passenger対応しているわけではない。ビルド時に指定しないとPassengerのモジュールが組み込まれないから。

以下は、passenger対応させた上でinitスクリプトの登録までする手順。

Read the rest of this entry »

 

[Rails]url_forで後ろに何か「#」で始まる奴をつける

http://udzura.jp/index.html#hoge みたいな後ろの「#hoge」を、url_forで追加する。

:anchor と言うオプションをつける。

1
2
p url_for :controller => 'udzura', :action => 'bird', :format => 'html', :anchor => 'para2'
#=> '/udzura/bird.html#para2'

あの「#anchor」には「フラグメント識別子」と言う立派な名前があるのだが、まったく普及してなくて通じないのでこの名前には実質意味が無い。「アンカー」って言うとアンカータグみたいだし。。。むずかしいよ。。。

あと、:anchorに限らず他のurl_for向けオプション(:hostとか)に使われているパラメータ名も、普通のQUERY_STRINGなURLパラメータ名に使わない方がいいんじゃないかと思ったよ。何かすごい不自由な日本語になった。要するに params[:anchor] みたいなことが起こらない方がいいと思う。