DailyとMonthlyのアーカイブ表示のバグを修正
今まできちんと動作していなかった、DailyとMonthlyのアーカイブ表示の 実装を修正しました。
記事一覧表示画面の上部に表示されているカレンダーからアクセスできます。
よろしくお願いします。
今まできちんと動作していなかった、DailyとMonthlyのアーカイブ表示の 実装を修正しました。
記事一覧表示画面の上部に表示されているカレンダーからアクセスできます。
よろしくお願いします。
Railsのroutes.rbでNamed Routeを利用するときに、
メソッド名の競合などで通常は使えない名前をどうしても
利用したい場合、以下のように記述することで利用できます。
config/rou
1 map.send :method_missing, :touch, 'foo/:id/to uch', :action => 'touch'
メソッドがすでに定義されているため、method_mis
が呼ばれなくなっている状態を無理やり回避しています。
Railsのプラグインは、簡単に作れるせいか、おかしな、
というか、随分てきとうな名前のものが多いのですが、最近は
一時期流行していたacts_as_xx系のプラグインに代わり、
xxx_fuという名前のプラグインが増えてきました。
:fields => [ :start_dat etime, :end_datet ime].さて、次に流行するのはどんな名前でしょう。
更新履歴
記事の引越しから漏れていたのでサルベージ。
zsh用のscript/genおよびscript/desの補完関数です。
以下のスクリプトを.zshrcなどに書いておけば、
./script/gに続けてTABキーを押す事で
generatorの入力を補完できます。
~/.zshrc
1 _generate () { 2 if [ ! -f .generators ]; then 3 ./script/g enerate --help | grep '^ [^ ]*: ' | sed 's/[^:]*:/compadd/ ' | sed 's/\,//g' > .generator s 4 fi 5 `cat .generator s` 6 } 7 8 compdef _generate generate 9 compdef _generate destroy
RubyGems、Plugin、BuildInの3種類のgeneratorを検出して補完します。 検出動作が重いので、カレントディレクトリにキャッシュファイルを作成して 2度目以降の補完を高速化しています。 generatorを追加した場合など、キャッシュを無効化したい場合は
1 $ rm .generators
でキャッシュファイルを削除してください。
補完が重くても余計なファイルが生成されるよりはマシ、 という場合はこちらをどうぞ。
1 _generate () { 2 `./script/generate --help | grep '^ [^ ]*: ' | sed 's/[^:]*:/compadd/ ' | sed 's/\,//g'` 3 } 4 5 compdef _generate generate 6 compdef _generate destroy
誰かが作らないかなあ、と思って待っていたのですが、 なかなか出て来ないので自分で作りました。 もっと良いものがあったら教えていただけると嬉しいです。
ORF 2007 で地下展の話を聞いて興味深かったので、 日本科学未来館に行ってきました。

ボストーク湖 の展示が興味深かったです。 ほかにもいくつか面白いキーワードを採取できました。
それから、お土産店で蛍石と方解石をGet。
蛍石(左)と方解石(右)

どちらの鉱石も、レンダリングアルゴリズムを考える上では、 興味深い光学特性を持っています。
認証を作るのは面倒。ブログで便利なプラグインを使っているのを教わり、早速私も導入してみました。
ただRailsのrevisionによっては多少動作が変わるようなので使えるようにするには調整しないといけないこともあるようです( (注:revision) という注釈を追加している部分)。
***
1 ./script/generate open_id_authenticate d USERMODEL CONTROLLER NAME
(注:revision) map.resour
1 map.resources :users 2 map.login '/login', :controller=> 'session', :action => 'new' 3 map.logout '/logout', :controller => 'session', :action => 'destroy' 4 map.begin_sess ion '/session/b egin', :controller => 'session', :action => 'begin' 5 map.complete_s ession '/session/c omplete', :controller => 'session', :action => 'complete'
1 class ApplicationControlle r < ActionCont roller::Ba se 2 include Authentica tedSystem 3 before_fil ter :login_from _cookie
(注:revision) redirect_t
1 def redirect_back_or_def ault(default) 2 session[:return_to] ? redirect_t o(session[:return_to]) : redirect_t o(default) 3 session[:return_to] = nil 4 end
http://rai
via Railscasts
Rails2.0が数週間でリリースの見通し。Railscastでは数回に渡ってRails2.0をピックアップするそうです。今回のポッドキャスト見どころは下記。
***
1 <% title 'Todos' %> 2 <%= render :partial => @todos %>
1 <% title h(@todo.title) %> 2 <%= render :partial => @todo %> 3 <%= h(@todo.description) %>
1 <% div_for todo do %> 2 <h2><%= link_to h(todo.title), todo %></h2> 3 <% end %>
1 <% title 'New Todo' %> 2 <% form_for @todo |f| do %> 3 <%= f.text_field:title %> 4 <%= f.text_are a :descripti on %> 5 <% end %>
記事の引越しから漏れていたのでサルベージ。
Generatorプラグインの作り方をメモしておきます。
まずはプラグインの雛形を作ります。
1 $ ./script/generate plugin foo
次にGeneratorプラグインに必要なディレクトリを用意。
1 $ mkdir -p vendor/plugins/foo/g enerators/ foo/templa tes
FooGenerat
vendor/plu
1 class FooGenerator < Rails::Gen erator::Na medBase 2 def initialize (runtime_ar gs, runtime_op tions = {}) 3 super 4 ~ 引数・オプションの解釈と初期化 ~ 5 end 6 7 def manifest 8 record do |m| 9 ~ マニフェスト ~ 10 end 11 end 12 end
マニフェストの書き方は
この辺
が参考になります。基底クラスは、Rails::Gen
続いて、マニフェストから参照するテンプレートファイルをtemplatesディレクトリの中に作ります。テンプレートファイルはERbテンプレートなので、Generatorクラスのコンテクストでrhtmlを書くような感じで記述できます。
以上で完了。Generatorを使うときは以下の通り。
1 $ ./script/generate foo
マニフェストの書式を以下にまとめておきます。
m.class_co
生成するクラス名の衝突を検出します。 Generatorで生成する予定のクラス名をすべて列記しておきましょう。
m.director
RAILS_ROOT
m.template
Generatorが生成するファイルを宣言します。relative_sは、templatesディレクトリからの相対パスでERbテンプレートを指定します。relative_dには生成されるファイルの場所をRAILS_ROOTからの相対パスで記述します。
template_oには、:assigns => {:foo => some_thing
のような感じで、ERbテンプレートから参照可能な値を設定する事ができます。
m.readme( *relative_s
helpドキュメントを指定します。指定したファイル群は単純に連続出力されます。
m.migratio
migrationファイルの生成を宣言します。migrationファイルは、ファイル名の先頭に005_のようなプレフィックスが付くので、専用のメソッドが用意されています。
relative_dは、migrationファイルを配置するディレクトリを、RAILS_ROOTからの相対パスで指定します。生成するファイル名は、template_o
で明示的に指定するか、さもなくばGeneratorの引数から自動的に決定されます。
そのほかの挙動はm.template
m.dependen
Generatorの依存関係を宣言します。これによってメタジェネレータを記述する事も可能です。素晴らしいですね。
m.file(relative_s
ファイルのコピーを宣言します。relative_s、relative_d
はそれぞれRAILS_ROOTからの相対パスです。
file_optioには、:chmod, :shebang, :collisionを指定します。
詳細な挙動については
こちら
を参照のこと。
ブロック引数は、relative_sで指定したファイルが何らかのテンプレートファイルであるときに、テンプレートを展開する処理を記述します。そうでない場合は省略可能です。
より詳細な情報が必要な場合は、
Rails::Gen
更新履歴
記事の引越しから漏れていたのでサルベージ。
Ruby on Railsを使ってある程度大きめのアプリケーションを作るようになると、ごく稀に「Lost connection
この問題については、yuguiさんの記事
「Lost connection
結局のところ、はっきりとした解決策も見つからず、ごく稀なので放置気味になっていたのですが、先日解決策を見つけたので改めて紹介します。
解決策:
mysql_retr
詳細はこのGemの作者のTylerさんの記事
「Saying goodbye to lost connection
使い方:
# sudo gem install mysql_retr y_lost_con nection
を行い、config/envの中でrequire 'mysql_retrをすればOK。
rails
2日ほど使ってみたところ、このGemを導入してから一度もLostConnec
See Also