喉元過ぎれば熱さ忘れるということもあり、あとで同じようなことが起きたときに「あれ、なんだっけ?」とならないようにメモ。エラーメッセージをググって探しにくる人のためになればなおよろし。 NoMethodError (undefined method `params?' for #): ItemsController には `params?' というようなメソッドはないということで、そのまんまの意味。 メソッド名の綴りが間違ってる。他を疑う前にまず自分を疑うこと。 module のメソッドの場合、module_function するのを忘れて、public になってない。 同じく module の場合、include していない。 Mongrel を再起動しないでテストしてるときは、debugger で止めて、load '???.rb' で明示的にリロードしてやらないと、require もしく
Rails で分業しようとするとコントローラとビューはなんとかならないことはない(ほげチームは hoge_controller と app/views/hoge 以下のみを自由にしていい、とか)けど、モデルはきついねぇ、なんてのを同僚と雑談。 で、ふと思ったのが、モデルもモデルにもりもりとメソッドを追加するんじゃなくて、普通にインスタンス化したあとでチームごとのモジュールを extend すれば他チームとのコンフリクトを防げませんかね、と。 Rails でよくみるような、factory っぽいのとかのクラスメソッドを追加しようとするとカオスになる気がしますが。 # hoge_controller def an_action @foo = Foo.find(params[:id]) # @foo.respond_to? :methods_for_hoge_action #=> false @
In math, a unary operation is an operation with a single input. In Ruby, a unary operator is an operator which only takes a single ‘argument’ in the form of a receiver. For example, the – on -5 or ! on !true. In contrast, a binary operator, such as in 2 + 3, deals with two arguments. Here, 2 and 3 (which become one receiver and one argument in a method call to +). Ruby only has a handful of unary
The performance of Ruby on Rails is influenced by many factors, particularly the configuration of your deployment server(s). However the application code can make a big difference and determine whether your site is slow or highly responsive. This short article is about some of the tips and best coding practices to improve performances in Rails only, and won’t attempt to cover the server configurat
前回からの続き。前回は、ユーザの入力を受け取れた。 後で気が付いたのだが、 def add_item render_text @params.inspect end の例が、TodoListTutorial にあった。見落としていたらしい。 さて、@params[:user][:keyword] で検索語が得られるのが判った。次は、SQL に渡せば良い。find_by_sql の他にも、色々な簡略系があるらしい。しかし、何を省略して良いのか、何が必須なのかが、一目で判らないので、全ての SQL を記述している。 app/controller/todos_controller.rb に以下のコードを追加。@keyword は特に必須では無いが、参照したいときの為に、抜き出してある。 def result @keyword = @params[:user][:keyword] @matches
さて、折角なので Todo に検索機能を付けたい。 まず最初に思いついたのが、app/views/user/login.rhtml からの流用。 <div class="form-padding"> <%= start_form_tag :action => 'login' %> <table> <%= form_input :text_field, "Login ID", "login", :size =< 30 %><br/> <%= form_input :password_field, "Password", "password", :size => 30 %><br/> </table> <%= end_form_tag %> </div> の部分を app/views/todos/search.rhtml に複写した。action を result に変え、フォームに付けられる
Rails で user_engine を実験している。設定を終わらせると、http://localhost:3000/user/login からログインが出来る。ログイン後に表示されるページは、vendor/plugins/login_engine/app/views/user/home.rhtml にある。もし、ログイン後の画面を変更したいのなら、app/views/user/home.rhtml に新しく作るとこちらが使われる。 user_engine の home.rhtml には <%= link_to '« logout', :action =gt; 'logout' %> と記述がある。リンクを作り、usr/logout に飛ぶと言う意味だ。Todo のページにどうすれば飛べるのか、すぐにはわからなかった。action に todos/list とやると、http://loc
今は、ログイン画面の表示を少し変えようと試行錯誤している。app/views/user/login.rhtml を編集中だ。TodoListTutorial に user_engine を用いて、認証をかけて実験している。 適当な位置に、 <p> Count <%= Todo.count_by_sql('select count(*) from todos') %> </p> といれて、http://localhost:3000/user/login を再ロードすると、Todo の数が表示されるようになった。 vender 以下に作られた、 user_controller.rb をapp/controllers/user_controller.rb にコピーした。 login ページにアクセスすると、user_controller の中の同名の関数が実行され、rhtml から関数中の変数に
PostgreSQLは丈夫だし、速度も出る。使いやすい。だけど結構でかいから、あまりばかすか使うと酷いことになる。 そして、フットプリントが小さくていけてるという噂のFirebird。ARは対応してるんだけど、残念ながらrake migrateが使えない。生SQLでcreate tableしてやればいいとはいえ、Migrationを捨てるのはちょっと。 そこで登場SQLite。大規模システムには向かないけど中小規模なら十分な性能が出て、何より小さい。 と言うわけで鼻歌交じりにRailsアプリを組んで、SQLiteを採用。さあこれでメモリに優しく新サービスを、と思って試していると、多発するBusyException。おまけに一回起こると再起動してやらないと死んだまま。これじゃ使い物にならない。 これの原因は、タイムアウトまでの時間がデフォルトで0に指定されているからだそうです。シングルプロセ
Posted by Peter Donald Wed, 01 Mar 2006 00:53:00 GMT By default rails does not clear out stale sessions from the session store. To implement this feature I added the following small snippet of code; class SessionCleaner def self.remove_stale_sessions CGI::Session::ActiveRecordStore::Session. destroy_all( ['updated_on <?', 20.minutes.ago] ) end end
Posted by masuidrive Sun, 26 Mar 2006 20:27:00 GMT いやー、去年CVSからSubversionに移行したんですが、単純にimportして、coして、ソース編集して、commitするだけの人生でした。 今日、やっとtrunkの意味がわかりました。Subversionはタグやブランチって無いんですね。だから、それをディレクトリ分けでして、運用で逃げろってことなんだ。 trunkディレクトリ以下で作業して、区切りがきたらタグの代わりにtagsディレクトリにコピーすれ、って事なんですね。 これが解ったので、rails2uのsubversionでRailsアプリを管理 を参考に作った、自分用のrails.create も公開しておきます。これは結構前から使ってたんですが、今日初めてtrunkに対応しました。 これをつかえば、適当なディレクトリで”ra
Posted by masuidrive Sat, 06 May 2006 08:54:00 GMT Railsでアプリを作るときの始めの作業をまとめて、自分メモがてから書いておきます。 まずは、いまさらsubversion解ってきた で紹介した、自作のrails.create コマンドでプロジェクトのディレクトリを作り、自動でsvnにまで入れます。 このコマンドでは、railsコマンドでプロジェクトのディレクトリを作り、database.ymlを自動設定して、logなど必要のない部分を除いてsvnのimportしてくれるコマンドです。 もしsvn使わないなら、railsコマンドとdatabase.ymlを手動でやってもOK。 続いてsessionをDBに保存するために、config/envitoment.rbに下記の1行のコメントを削除して、イキにします。
なんか色々はまったのでメモです。 一見まとめに見えますが、実は「早い段階でやっとけばよかった」と後悔したり、向こう数日以内に後悔する予定のところをピックアップした愚痴だったりしますけど。 文字コードはUTF-8を使うのが無難。 テーブルの文字コードもUTF-8に。latin1にEUC-JPなデータを入れてしまうと大変。 Ajaxを絶対に使わないならSJISとかでもいいかも。 ケータイを考慮する場合も、around_filterを使って入出力の文字コードを変換するほうが楽だと思います。実際にはまった人の声も聞きたい。 vimを使う場合はこちらもどうぞ。 とりあえずバージョン管理はSubversionをお薦め。 Capistrano(旧名:SwitchTower)でdeployする場合、${RAILS_ROOT}/logをリポジトリに入れるとはまる。${RAILS_ROOT}でsvn:igno
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く