Ruby on Rails(2以前)
Ruby on Rails(2以前)
不具合
- 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が使用できるかもしれない
新着メモ
- ajaxのリクエストのテスト
- Factory Girl
fixtureなデータを自動生成 - rspecで振る舞いを共通化
- config.after_initialize
- FasterCSVでSJISファイルを扱う
- rspecでファイルアップロードをテスト
- before_type_cast
- Rails で、SQL分を直接実行する場合
- ColumnCommentsプラグインの改良
ColumnCommentsプラグインが、decimal型のカラムを扱うときにschema.rbファイルがおかしくなるのを修正している - CruiseControl.rbの設定
- プラグインにspecを追加
- vim環境の構築
- form_forで、エラー項目につくdivタグを変更
- ActiveRecordのconditionsを少しだけきれいに書く
- 大規模Railsサイト構築について
- JasperReports|JasperReportsをRailsから呼び出す
リニューアル
RJBを介してJasperReportsの処理を呼び出す方法に変更
この方法で、JasperReportsの処理を実行する際に毎回JVMを起動するというコストが削減される
ただし、railsのインスタンスと共にJVMが常駐するので、メモリ消費が心配ではある - Rails 2.3.5
- Nested Object Forms
フォーム上で、複数の関連したモデルを一度に表示、更新
要するに、入れ子状態のモデルをフォームで扱える機能
Rails 2.3 から追加になった - マイグレーションで利用可能なカラムの属性
- マイグレーションでdecimal型のカラムを生成する
- 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などでプロジェクトを参照するとえらい事になる… - Active RecordとTinyIntの自動変換について
- ZenTest(autotest)
- rspec・cucumber・webratによるテスト
- Hashの順序を固定化
- active_recordのコールバックメソッド
- モデルとは関係ない検索条件などのパラメータをviewとcontrollerでやりとりする
- ActiveRecordではないモデルでバリデーションを実行
- Railsの表示高速化にて動的なイメージやCSSをキャッシュファイルとする作戦
- 浮動小数点問題
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とか)を後からロードするための方法 - prawn
prawnってなんだ?
PDFが簡単に作れるのか?
http://guides.rubyonrails.org/actioncontroller_basics.html#_streaming_and_file_downloads - gemでインストールしたライブラリのバージョンを指定してrequireする
- active_recordでカラムにArrayデータをテキストデータとして登録する
Railsプラグイン
rubyプラグイン
Ruby本体に関する情報
メモ(2.3.4)
- seeds
初期データの設定 - [[プラグインのI18n]]
プラグインで定義したlocaleファイルを自動的に参照
メモ(2.3系)
- [[Rails 2.3.x更新情報]]
- Nested Attributes
- Nested Transactions
- 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系)
メモ(2.1系)
- [[依存するgemのファイルを指定する]]
- [[form_forの中身をpartialで書く]]
- [[Rails 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] = 'ホスト名[:ポート]’を設定しておかないと、エラーとなる
どこに書くのがいいのか、要調査config.action_mailer.default_url_options = {:protocol => 'https', :host => 'gendosu.ddo.jp'}
- [[named_scope]](2.1.0以上でした)
- [[Rails 2.0でのroute.rb]]
- CSRF対策を一部のアクションだけ解除
Rails2.0だと、外部からpostリクエストを受け付けると、InvalidAuthenticityTokenが発生するが、その場合に
POSTで受けたいけどCSRF対応を解除して受け付けたい場合、
コントローラの頭にprotect_from_forgery :except => :view
なんて感じでチェックをスルーさせたいアクションを記述すると、そのアクションに対しては外部からPOSTしても例外にならない
- [[Rails 2.0でatom]]
- [[Rails 2.0でwith_scopeを使うには]]
- [[Rails2AndMySQL|Rails 2.0時代のMySQLについて(gem install mysql)]]
- [[Rails20|Rails 2.0情報]]
メモ
- [[tech:Colinux-coLinuxでRuby_on_Railsの実行環境を作成]] を参照
※ホストOS側のフォルダを共有してRailsを起動した場合に、ファイルシステムでセッションを管理すると、正常に動作しない
coLinux内のゲストOSでsambaを使用して、そこにあるRailsプロジェクトをホストOS側のeclipseで参照する事で解決?
- [[フォームの項目をJavaScriptで、シリアライズする]]
- consoleのリロード
reload!
- [[トランザクション]]
- [[一つのフォームで複数モデルを対象に更新したい場合]](fields_for)
- [[クライアントIPの取得方法]]*
- [[RadRailsでのデバッグ]](ruby-debug-ide)
- [[capture and content_for]]
viewの一部をテンプレート化出来る? 要調査 - [[ruby-debug-ide]]
- [[warning toplevel constant]]
- [[テキストデータ内のURLを自動でリンクにする方法]]
- [[404.htmlの出力の仕方]]
- [[カスタムフォームビルダー]]
- [[datetime_selectの書式を日本語化する]]
- [[form_forのブロックないで使うフォームヘルパーをオーバーライド]]
- [[日付のフォーマットをデフォルト設定]]
* *マイグレーションで直接SQLを実行させる*
<pre>
execute(<<-SQL)
insert into articles select * from old_articles
SQL
</pre>
* *[[モジュール構造を使う]]*
app/model/article.rb => app/model/blog/article.rb
* *[[GMailを使ってActiveMailerでメール送信]]*
* *[[無限スクロール]]*
ページが複数ある画面で、画面の一番下までスクロールすると、自動的に次のページを読み込み、最下部に追加してくれる機能
検索結果なんかのリストで、次のページへの移動リンクをクリックする必要が無くなる。
* *[[JSON]]*
* *[[railsのバージョンを固定する]]*(rake rails:freeze:gems)
* *[[初期データ登録タスク]]*
* *バージョンを指定してrailsプロジェクトを作成*
<pre>
rails _1.2.6_ my_proj
</pre>
* *attr_accessible*
モデルでattr_accessibleを指定した場合、それ以外のカラムはプロテクトに設定される
カラムとして、:name, :email, :crypt_passがあるとしたら
<pre>
attr_accessible :name, :email
</pre>
とすると、:crypt_pathはプロテクトにされて、外部から参照、更新できない
* *[[active_recordで複数テーブルをまたいだジョインの仕方]]*
* *[[ログレベル]]*
* *[[observerとは]]*
* *[[RailsのパフォーマンスアップTips]]*
* *[[Railsのページキャッシュ]]*
* *current_pageチェック*
current_page?(:controller => 'top’, :action => 'index’)
でチェックできる
* *[[WSSE認証]]*
* *[[HTTP BASIC認証]]*
* *[[rakeタスクの中で、別のタスクを呼び出すには]]*
* *[[active_heartなどerror_messages_forヘルパーを上書きする日本語化で不具合がある場合]]*
active_scaffoldとactive_heartを入れてる場合に、active_scaffolの日本語化が優先されるらしく
うまく日本語化されない
* *[[Railsでcaptcha]]*
* *[[現在のテーブルのデータをyml形式ではき出す]]*
* *"Ruby on Railsで携帯からファイルのアップロード(+送信者認証)":http://koress.jp/2007/09/ruby_on_rails_3.html*
* *[[renderでコレクションのインデックスを取得]]*
* *[[renderのcollectionに与えるべき配列の一つだけをrenderに渡したい]]*
* *[[テキストが長い場合に切断]]*
* *[[HTMLのタグ削除]]*
* *[[rubyでMechanize]]*
* *[[IfModifiedSince|If-Modified-Since]]*
* *[[JasperReports|JasperReportsをRailsから呼び出す]]*
javaで動作し、PDF,xml,xlsなどのフォーマットで出力出来るツール
* *[[JasperReports_old|JasperReportsをRailsから呼び出す(OLD)]]*
* *[[RailsXls|Railsでexcel出力するプラグイン]]*
javaのPOIライブラリを使う
* *[[RenderComponent|render_component]]*
%{color:red}処理が重くなるので、使用しない方向で%
* *[[RakeVersion|rakeのバージョンを指定して実行したい]]*
rakeコマンド実行時に以下のメッセージが出る場合などに、rakeのバージョンを指定する必要がある
<pre>
undefined method `last’ for {}:Hash rake db:migrat
</pre>
* *[[SSB|携帯画面エミュレート?]]*
* *[[NullCheck|nullチェック]]*
* *[[RunProduction|productionで実行]]*
* *[[RunProductionForMac|productionで実行 for Mac OS X]]*
* *[[ActiveRecordTips|ActiveRecordのsaveメソッド]]*
* *[[EditTreeDataOnRails|RailsでTree構造のデータを手軽に編集するには]]*
* *[[SortableElement|sortable_element]]*
* *[[RelativeUrlRoot|開発時はURLのルートで開発するが、本番はサブURLでデプロイする場合(relative_url_root)]]*
* *[[Validation|Validation]]*
* *[[HyperEstraier|Hyper Estraier(全文検索エンジン)をRailsで使う]]*
* *[[Test|テスト]]*
* *[[FunctionalTest|コントローラのテスト]]*
* *[[OpenId|open id]]*
* *[[OverRide|オーバーライド]]*
* *[[HHelper|Hヘルパー]]*
* *[[Gruff|Gruff(rubyでグラフを書く)]]*
* *[[Sparklines|Sparklines(Railsでグラフを書く)]]*
* *[[Delimiter|数値項目のカンマ区切り]]*
* *[[Encoding|データベースの文字コード設定]]*
* *[[ActionWebService|AWS(ActionWebService)とは]]*
* *テーブルの~_idカラムにインデックスを設定すると速度が上がる*
* *[[ErrorPage|独自のエラー画面表示処理]]*
rescue_action_in_public(exception)
rescue_action_locally(exception)
* *[[ActiveResource]]*
* *[[SQLite|SQLiteについて]]*
* *[[Rake|rakeタスク]]*
* *[[BaseSend|libに追加したメソッドをhelper,viewの中でも使用したい場合]]*
h3. メール関連
* *[[メール受信]]*
* *[[メール送信]]*
* *[[メール送信テスト]]*
webサーバ関連
* *[[tech:Passenger]]*(mod_rails)
*[[tech:apache]]* のモジュール
*[[tech:nginx]]* もサポート
Railsをapacheで直接動かすことが出来るようになる
** *[[x_sendfile]]*
apacheのモジュールつながりで、Railsで扱う画像ファイルを、直接apacheで処理させる事が出来る
* *[[Mongrel|mongrel]]*
** *[[MongrelOrLighttpd|mongrelとlighttpdの話]]*
* *[[tech:Lighttpd]]*
** *[[LighttpdConfInRailsProject|Railsプロジェクトごとにlighttpd.confファイルを持つやり方]]*
** *[[LighttpdForMac|lighttpdで起動 for Mac OS X]]*
** *[[tech:Lighttpd-Apacheを経由してlighttpdでCGIを動作させるには]]*
* *[[tech:Apache]]*
* *[[ログローテート]]*
便利ツール
* *[[DBDesigner|DBDesigner 4 Distributions]]*
データモデリング図を書くツール
データベースにテーブルを直接読みに行ける
* *[[tech:A5:SQL Mk-2]]*
DB Desinerと同じようなツール
データモデリング図を書くツール
データベースにテーブルを直接読みに行ける
開発環境
* Windows
** *[[windows:Ruby]]*
** *rubygems*
Windows版のOne-Click Installerの場合、rubygemsも同梱
** *[[Rails|Rails]]*
** *[[windows:MySQL]]*
** *[[windows:MySQL-rubyバインディング]]*
** *[[windows:SQLite3]]*
** *[[windows:SQLite3-rubyバインディング]]*
** [[Eclipse|eclipse]] と [[Aptana|Aptana Studio]]
または [[netBeans]]
* Mac OS X
** *[[mactiger:Ruby]]*
** *[[mactiger:rubygems]]*
** *[[Rails|Rails]]*
** *[[mactiger:MySQL]]*
** *[[mactiger:MySQL-rubyバインディング]]*
** *[[mactiger:SQLite3のインストール]]*
** *[[mactiger:SQLite3-rubyバインディングのインストール]]*
Ruby on Railsに関連するツール
* CMS(コンテンツ管理システム)
** *"Radiant CMS":http://radiantcms.org/*
HPなどを手早く管理するには良いかもしれない。
Rails上に環境が作られるので、サポートツールという訳ではない
** *"Railfrog":http://railfrog.com/*
Railfrogの特徴としては、なぜか本体としてはソフトウェアを提供せず、プラグインとして提供している点にある。
本体と切り離されているので、コマンド一つで導入できるというメリットがある。さらに次の予定としてgemで配布する方針も予定されている。
** *"Mephisto":http://mephisto.stikipad.com/help/show/Installing+Mephisto*
** *"RCMS":http://rcms.oopen.de/Home/*
* プロジェクトマネージメントツール
** *"ClockingIT":http://www.clockingit.com/*
その他情報
* “MySQLで全文検索が早い方法":http://www.tatamilab.jp/rnd/archives/000390.html
* “Ruby on Rails + Gruffを使って、11分で作る遺伝子発現データベース":http://itoshi.tv/d/?date=20060506#p01
* “Ruby on Railsで作成されたSNS「SKIP」":http://www.openskip.org/
* [[プロジェクトWikiテンプレート]]
ディスカッション
コメント一覧
まだ、コメントがありません