Ruby on Rails

不具合

  • ruby 1.8.7 p249 を入れると、Railsの実行ログに日本語を出力する場合に日本語が化ける
    ruby 1.8.7 p249 にはStringのinspectにバグがあり、ログ出力などでpを使った場合に日本語が化けるようである
  • windowsな環境で、Railsプロジェクトのパスに日本語が含まれる場合、もしかしたらRailsプラグインを認識しない事があるかもしれない
  • windowsでMySQL5.1を入れると、Railsから接続できないっぽい
    おそらく、gemでインストールするmysqlアダプタがMySQL5.1に対応していない
    筆者の解決方法は、coLinuxでlinuxを起動し、共有フォルダとしてrailsのプロジェクトを参照して
    linux内に実行環境を作る
    windows上ではeclipseで編集&SVNコミット
    ※最近、gemのmysqlが更新され、2.8.1を使用できるようになった
     このバージョンでならMySQL5.1が使用できるかもしれない

新着メモ

  • JasperReportsをRailsから呼び出す
    リニューアル
    RJBを介してJasperReportsの処理を呼び出す方法に変更
    この方法で、JasperReportsの処理を実行する際に毎回JVMを起動するというコストが削減される
    ただし、railsのインスタンスと共にJVMが常駐するので、メモリ消費が心配ではある
  • Nested Object Forms
    フォーム上で、複数の関連したモデルを一度に表示、更新
    要するに、入れ子状態のモデルをフォームで扱える機能
    Rails 2.3 から追加になった
  • VMWare Playerを使ってWindows上でCentOSの実行環境を作る
    以下の内容のVMWare Player版ですが、VMWare PlayerはホストOSとのファイル共有が使用できる
    これを使うと、前のcoLinuxでのファイル共有のような不具合は見られず、VMWare Server 2の時のようなSambaを立てる必要もなく
    快適に開発が出来るようである
    また、ゲストOSがCentOSであるため、VMWare カーネル準仮想化の機能が使用できる
    この機能をONにすると、若干ゲストOSの速度が上がるようである
  • VMWare Server 2を使ってWindows上でCentOSの実行環境を作成
    VMWare Server 2は、ホストとのファイル共有が使えないため、ゲストOSのCentOSにSambaサーバを立てて
    ホストOSからCentOS上の共有を見に行く作りにしなければならない
    その場合、eclipseなどでプロジェクトを参照するとえらい事になる…
  • 浮動小数点問題
    1.0 - 0.9 == 0.1
    
    この結果がfalseとなる
    これを解決するには
    require 'bigdecimal'
    a = BigDecimal(1.0)
    b = BigDecimal(0.9)
    a - b == 0.1
    true
    
  • firefoxのオートコンプリート
    firefoxを使ってログイン時にオートコンプリートでパスワードを保存すると、
    別のページの<input type='password'> が存在するフォームに
    自動的にログインIDとパスワードがセットされてしまう。
    解決法は
    <% form_tag( {:action => :create}, :autocomplete=>"off") do -%>
    
  • viewの中で現在のアクションの名前を取得する方法
    controller.action_name
    
  • 延滞ロード
    とりあえず、すぐ表示できる部分は表示してしまって
    重い処理の部分(一覧処理とかTOP10とか)を後からロードするための方法

サンプル

Railsプラグイン

rubyプラグイン

Ruby本体に関する情報

技術情報 - Ruby

メモ(2.3.4)

  • seeds
    初期データの設定

メモ(2.3系)

  • Templates
    Allows your new skeleton Rails application to be built your way with your default stack of gems, configs, and more.
  • Engines
    Share reusable application pieces complete with routes that Just Work, models, view paths, and the works.
  • Rack
    Rails now runs on Rack which gives you access to all the middleware goodness.
  • Metal
    Write super fast pieces of optimized logic that routes around Action Controller.
  • Nested forms
    Deal with complex forms so much easier.

メモ(2.2系)

  • active_scaffoldは安定版で2.2対応の物がないので、自分プロジェクトでは最近使ってない

メモ(2.1系)

  • active_scaffold 1.1.1 は起動出来ない
  • redmine 0.7.1 は起動できない
    rake rails:updateを実行すれば起動できるようだ

メモ(2.0系)

  • default_url_options[:host]
    url_for(:only_path => false)や、root_urlなどを使う(フルパスのURLを取得する)場合、default_url_options[:host] = 'ホスト名[:ポート]'を設定しておかないと、エラーとなる
    どこに書くのがいいのか、要調査
    1 config.action_mailer.default_url_options = {:protocol => 'https', :host => 'gendosu.ddo.jp'}
    
  • CSRF対策を一部のアクションだけ解除
    Rails2.0だと、外部からpostリクエストを受け付けると、InvalidAuthenticityTokenが発生するが、その場合に
    POSTで受けたいけどCSRF対応を解除して受け付けたい場合、
    コントローラの頭に
    protect_from_forgery :except => :view
    

    なんて感じでチェックをスルーさせたいアクションを記述すると、そのアクションに対しては外部からPOSTしても例外にならない

メモ

  • Colinux-coLinuxでRuby_on_Railsの実行環境を作成 を参照
    ※ホストOS側のフォルダを共有してRailsを起動した場合に、ファイルシステムでセッションを管理すると、正常に動作しない
     coLinux内のゲストOSでsambaを使用して、そこにあるRailsプロジェクトをホストOS側のeclipseで参照する事で 解決?
  • consoleのリロード
    reload!
    
  • マイグレーションで直接SQLを実行させる
    execute(<<-SQL)
      insert into articles select * from old_articles
    SQL
    
  • 無限スクロール
    ページが複数ある画面で、画面の一番下までスクロールすると、自動的に次のページを読み込み、最下部に追加してくれる機能
    検索結果なんかのリストで、次のページへの移動リンクをクリックする必要が無くなる。
  • バージョンを指定してrailsプロジェクトを作成
    rails _1.2.6_ my_proj
    
  • attr_accessible
    モデルでattr_accessibleを指定した場合、それ以外のカラムはプロテクトに設定される
    カラムとして、:name, :email, :crypt_passがあるとしたら
    attr_accessible :name, :email
    

    とすると、:crypt_pathはプロテクトにされて、外部から参照、更新できない
  • current_pageチェック
    current_page?(:controller => 'top', :action => 'index')
    でチェックできる
  • テーブルの~_idカラムにインデックスを設定すると速度が上がる

メール関連

webサーバ関連

  • Passenger(mod_rails)
    apache のモジュール
    nginx もサポート
    Railsをapacheで直接動かすことが出来るようになる
    • x_sendfile
      apacheのモジュールつながりで、Railsで扱う画像ファイルを、直接apacheで処理させる事が出来る

便利ツール

  • DBDesigner 4 Distributions
    データモデリング図を書くツール
    データベースにテーブルを直接読みに行ける
  • A5:SQL Mk-2
    DB Desinerと同じようなツール
    データモデリング図を書くツール
    データベースにテーブルを直接読みに行ける

開発環境

Ruby on Railsに関連するツール

  • CMS
    • Radiant CMS
      HPなどを手早く管理するには良いかもしれない。
      Rails上に環境が作られるので、サポートツールという訳ではない
    • Railfrog
      Railfrogの特徴としては、なぜか本体としてはソフトウェアを提供せず、プラグインとして提供している点にある。
      本体と切り離されているので、コマンド一つで導入できるというメリットがある。さらに次の予定としてgemで配布する方針も予定されている。
    • Mephisto
    • RCMS
  • プロジェクトマネージメントツール

その他情報