Rails

組織選択ウィンドウのレンダリングを遅延させて表示速度改善

組織選択ウィンドウやグループ選択ウィンドウは、組織選択ボタンとかを押したらすぐに使えるように、 一番最初(mainとか)でレンダリングしておく必要があるが普通にやろうとすると、 組織選択ウィンドウをレンダリングするまで全体も描画されず非常に表示が…

RubyWorld Conference 2009 メモ(1)

RubyWorld Conference特に印象に残った話 GWebLink-Neo CMS : 富士通四国システムズ 2001年からやってて2009年4月現在318システム稼働中とのこと。 CMS(ブラウザUI)だけじゃなくて、デジタルサイネージ(データ配信)でイオンモールとかみずほ銀行の金利ボード…

component_initでActiveRecord関連のエラー(load_missing_constant)

以下のようなエラーが発生してた。 C:\work\NetBeans65\bizca>ruby script\component_init hoge C:/work/NetBeans65/bizca/vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:263:in `load_missing_constant': uniniti…

 Rails+MySQLで日付指定

こんな感じのフォームがあったとして、年月とか日付を指定してDBから値を取ると。 画面側からわたってくるパラメータはこんなかんじ "conditions"=>{"trails_select"=>"month", "select_year"=>"2009", "select_month"=>"7"} "conditions"=>{"trails_select"…

RailsアプリでJavascriptライブラリを使用してグラフ描画その2

前回のやつをちょびっと改良して、描画する系列を動的に増やしたりできるようにしてみる。 コントローラ action内で配列をto_jsonしてインスタンス変数に格納。今回は2つの商品の月別売上推移みたいなイメージ。 配列の頭(index=0)が系列名、以後は値となる…

RailsアプリでJavascriptライブラリを使用してグラフ描画

結論:これは使えそう! RailsっていうかRubricksだけどww 使ったライブラリ Javascriptライブラリー - HTML5.JP のグラフのやつ。 HTML.JPのライブラリは、グラフの種類毎にJSファイルが分かれてる。 今回のサンプルでは折れ線。 準備 JSファイルを読み込…

 Rails標準のヘルパー (module NumberHelper)

number_to_percentage(number, options = {}) パーセント表記にしてくれる。 options: # * :precision - Sets the level of precision (defaults to 3). # * :separator - Sets the separator between the units (defaults to "."). # # ==== Examples # num…

Railsでチャート(書きかけ)

Amazing Charts In Rails - InfoQ Jan 29, 2009 の記事。コメント欄にJS関係も記載されてる。

RubricksでTest::Unit

Modelのテスト ソースコード的には一般的なTest::Unit(Rails1.2系)と変わらない。 親クラスは、Rails2.0じゃないのでActionSupport::TestCaseではなくTest::Unit::TestCaseになる。 あと、ポイントとしては、Rubricksで提供(カスタマイズ?)しているtest_hel…

 rake db:migrateとcomponent_initのデフォルトインストール先

rake db:migrate -> development script/component_init -> production なので、set RAILS_ENV=xxxxxx してからmigrateとcomponent_initするのが吉。 (以下詳細)

 Ruby on Rails でのモックとスタブの作成 RSpec、Mocha、そして Flex Mock に関する Ruby のテスト戦略

 test環境を指定してdb:migrate

>rake environment RAILS_ENV=test db:migrate

 Drecom Award on rails 2008-受賞作品

Drecom Award on rails 2007-受賞作品

MySQLで容量の大きいファイルを格納する。

添付ファイルをMySQLで格納するために、LONGBLOB型を使用。LONGBLOB型は約4G(3^32バイト)なんだけど、ファイルをアップロードしようとするとMySQLが落ちてしまう。 (参考:MySQL 5.1 リファレンスマニュアル :: 10.5 データタイプが必要とする記憶容量) テー…

 クックパッドは月間2億5000万PV、世界のRailsサイト中alexaのランキングで7位。

クックパッドのシステム構成 « クックパッド開発者ブログより。CookPadはRailsだったのか。 システム構成 OS: CentOS WebServer: Apache2.2 (mod_proxy_balancer) APServer: Mongrel + Mongrel Cluster DBMS: MySQL5.0(MyISAMメイン。一部Tritonnで全文検索…

 paginating_findより早い(と思う)プラグイン作ってみた

一覧表示処理が遅かったんだけど、よくよく見てみるとページネートの処理で遅くなっている模様。 単純にAR.findで取ってくるだけなら、30〜40%早くなる。ついでにページネート用の件数(全件件数)取得のcountをやっても30%くらい早い。 #ちなみにviewでのペ…

 Railsでデータの件数を数える

ActiveRecord::Base.count_by_sql Module: ActiveRecord::Calculations.count Person.count(:all, :conditions => "age > 26") # Performs a COUNT(*) (:all is an alias for '*') paginate_by_sql が欲しいとゆいたいですヽ( ・∀・)ノくまくまー(2005-06-29…

 TechCrunch Japanese » Rails新アプリ131点が週末一斉公開に。大賞選抜の投票に参加してみよう

 Railsのパフォーマンスtipsトップ10 - itsbibuqのBlog

 SQL直発行を断念

ARではSQLが自動生成されるわけですが、SQLを直発行してDBのI/Oを減らしてみようという試みをしていましたが断念。 簡単に言うとページネイトの対応でつまずきました。

 AR.findで取得するモノ

find(all)で取得するのは、そのmodelの配列だとばかり思っていたのだが、 :pageオプションを付けると、PagingEnumeratorクラスが取得されるみたい。:page無し @topic_list = Topic.find(:all, :include => :user ) pp @topic_list ↓ [#

CSRF対策について

CSRF対策の内容の具体的な詳細な説明↓http://rubist.blog77.fc2.com/blog-entry-117.htmlJMeterで試験する場合はOFFにする必要がある。CSRF対策をオフにする方法ぜんぶオフにしたい場合application.rbの以下の行をコメントアウトprotect_from_forgery :secre…

 サンプルアプリのタグ一覧(タグクラウド)処理

サンプルアプリで、タグ一覧表示の処理が遅い。 タグプラグインで、タグクラウドにして表示している為と思われる。 現状、全件表示するようにしてる(タグは100〜200件くらいだろうという読み)んだけど、試験用データは約8000(笑)入ってるため その件数が大き…

 CSRF対策

参考: Rails2のCSRF対策はレガシーなAPを保護しない - Rubricks Project

 フィルターの中でfindしたモデルを使う

権限チェック処理をフィルターで行ってみる。 権限チェックを行うためには、対象のモデルをfindする必要があるのだが、取得したモデルをそのままアクションの方でも使いたい。。。→インスタンス変数にすればOK。 ただし、アクションの中でいきなりインスタン…

 権限チェック処理を外出し

先日、Actionからヘルパメソッドを呼ぶというのをやってみようとしたが、要は権限チェックのメソッドを使いたかったのでした。権限チェック処理はActionでもViewでも使うので、共通のモジュールとして切り出して、ApplicationControllerとApplicationHelper…

 Controllerのアクションからヘルパーメソッドを呼ぶ

Rails2.0以降では、ApplicationController内で全てのヘルパモジュールを読み込むように設定されてるので、app/helpers配下の全ヘルパメソッドが使える。 application.rb class ApplicationController < ActionController::Base helper :all ・・(以下略)・…

form_forすげぇ

form_forは、「モデルに対応するフォーム」って説明がよくわかんなかったけど。。コードにしてみてその威力が判明^^(サンプル) Commentっていうモデルがあって、コメントを投稿するみたいな処理。viewは、まぁ普通。form_tagと大して変わらないような感じ。 …

確認ダイアログを出すボタン

button_toの第三引数に:confirmを指定する。 <%= button_to '削除', {:controller => 'comment', :action => 'delete', :id => c.id, :topic_id => @topic.id}, :confirm => 'コメントを削除してよろしいですか?' %>

 ページのタイトル(7/14追記)

(7/14追記) トラバで教えてもらいました!こりゃあいい! application.html.erbに↓こう書いておいて <title> <%= @title || "共通のタイトル" %> </title> Actionで個別のタイトルが必要なところだけで返してあげればOK。 def show @title = "詳細ページタイトル" end タイ…