Railsではi18nのAPIが使用できます。 I18n APIって何でしょうか? 何ができるのでしょうか? 荒っぽく書けば、helloというキーが指定された時に、対象言語が英語の場合は「Hello」、日本語の場合には「こんにちは」と出力できるような辞書ファイルを作成し、それを使用することを意味します。 「英語なんか使わない。自分のサイトは日本人しか来ない」という場合でもI18n APIの使用が便利なため、しばしば使われます。 例えば、数人でRailsアプリを開発する場合に、Userモデルの登録のためのビューを作成していたとしましょう。 ある人は、User#emailのラベルを次のように「Eメール」と書きます。 <label for="user_email">Eメール</label> ところが、別の開発者は別の場所で次のように「E-Mail」と書いたりします。 <label for="us
Rails 3のgemの管理に使用されるbundlerの使い方を復習します。 Bundlerの現時点の最新安定版のversion 1.2.3を対象とします。Bundlerを使うと何が嬉しいのか? あるgemが開発環境にはインストールされているが、production環境にはインストールされていない、といった問題が無くなる。 プロジェクトに必要なgemをはっきりさせることができる。 Bundlerのインストール %~ gem install bundler システム標準のrubyを使用している場合はsudoが必要な場合があります。rbenvやrvmを使用している場合はgem install bundlerのみでインストールできます。 bundle checkでインストール必要なgemをチェック Gemfileの中に記載されているgemのうち、これからどれをインストールしなければならないか
公開日時: 2012-09-05 10:30 OS X 10.8 Mountain LionのiOS Simulator、iPhone Simulator、iPad Simulatorは何処に存在するのか? どうやって単体で起動するのか書きます。 OS X 10.8でiOSシミュレータを使用するには、まずXCode 4.4.1をインストールします。「Mountain Lion (Mac OS X 10.8)にgccをインストールする」の記事の手順のようにXCodeとiOS Simulatorをインストールします。 iOS Simulatorの起動 iOS シミュレータを起動するには先ずXCodeを起動し、次の図のようにXCode -> Open Developer Tool -> iOS Simulatorのメニューを選択します。 これでiOS シミュレータが起動し、次の図のような画面が表
Rails3のgeneratorの標準のtemplate engineはerbです。Hamlを使いたい場合は次のようにconfig/application.rbの一部を変更します。 config/application.rb 以下のオプションを追加。 config.generators do |g| g.template_engine :haml end この結果、例えば rails g controller entries index show でentries_controller.rbを生成する際や、 rails g scaffold entry user:references title:string content:text index show でentryのscaffoldを生成する際に自動で生成されるviewのファイルが標準のerbではなくhamlで出力されるように
開発中のアプリでは、他人または自分の書いたmigrationsやそこから作られたschema.rbを使ってデータベースの構造を更新します。この時rake db:resetやrake db:migrate:resetのようなコマンドを使用します。これらの違いについてまとめます。rake db:resetはdbをドロップし、db/schema.rbにもとづいてcreateします http://guides.rubyonrails.org/migrations.htmlに書かれているように、rake db:resetはデータベースをdropし、db/schema.rbに書かれている現在のschemaをロードします。 db/migrate以下のファイルに書かれているマイグレーションを新たに読み込んだりせず、あくまでも現在のdb/schema.rbの内容でデータベースを作ります。 rake db:m
ActiveRecordのaccepts_nested_attributes_forを使用して、親子関係にある複数のモデルを同時に永続化する場合の親および子のモデルでそれぞれに設定したcallbackが実行されるタイミングをまとめます。 ActiveRecord::NestedAttributesを使用すると、親のモデルと子のモデルを同時に保存することができます。NestedAttributes自体の使い方はRailscasts.comのNested Model Form Part 2のチュートリアル等を御覧ください。NestedAttributesは便利に使用することができますが、親のモデルと子のモデルでそれぞれに設定したcallbackやvalidationがどのような順序で実行されるか正しく把握していないと、細かな作業を行う際に困ります。そこで、NestedAttributesを使用
Railsのcontrollerやviewの中で、現在処理しているURLを知りたい場合は、requesオブジェクトから情報を取得します。 以下のように、requestオブジェクトのメソッドの中には、URLに関する情報を得られそうなものが3種類ほどあります。 request#request_uri request#path_info request#url # app/controllers/entries.rb def index puts request.request_uri # => "/entries" puts request.path_info # => "/entries" puts request.url # => "http://localhost:3000/entries" end上のように、request#urlのみが現在処理中のURLをschema(http://)
公開日時: 2011-03-08 05:58 Rails 2.3.3からupdated_atのタイムスタンプを更新できます。 user.updated_at #=> "Wed Jan 27 23:29:22 +1300 2010" user.touch user.updated_at #=> "Wed Jan 27 23:30:08 +1300 2010" 関連する親モデルのupdated_atも更新する場合は、associationを指定する際に :touch オプションを指定します。 class Organization < ActiveRecord::Base has_many :users end class User < ActiveRecord::Base belongs_to :organization, :touch => true end 上記のように:touchオプショ
Railsで特定のモデル(例えばEntryという名前のモデル)のデータを更新した際に、updated_atの値を自動的に更新させないようにするには、当該のモデルの record_timestamps というクラス変数の値を false にしてからデータを更新するようにします。 具体的には以下のようにします。 (Entryというモデルのtitleというプロパティを更新する場合を例に用います) defaultではEntry.record_timestampsの値はtrueなので、これをfalseに変更 Entry.record_timestmps = false entry.title = ‘updated title’ entry.save 次回からは通常通りupdated_atの値を自動更新させるため、 Entry.record_timestampsの値をtrueに戻す Entry
Rails 4からpublic/index.htmlファイルが自動で生成されなくなります。 実際にどうなるのか、プロジェクトを作りながらみてみます。 「Rails 4 betaのインストール手順」を参考にしてRails 4.0.0.betaをインストールし、blogという名前で新規のプロジェクトを作成します。 ここでは~/codes/rails4というディレクトリを作成し、このディレクトリ以下にRails 4.0.0.betaや新規のプロジェクトを配置することにします。 mkdir -p ~/codes/rails4 cd ~/codes/rails4 # historyがとても大きいので過去のコミットを5つに限定してcloneします git clone https://github.com/rails/rails.git --depth 5 # blogプロジェクトの作成 rails/r
gitを使ってバージョン管理を行う際に、プロジェクト全体のツリー構造をそのまま管理する目的で、中身が何も無いディレクトリもgitの管理下に置きたい場合があります。 何も対応しないと、gitは空のディレクトリをバージョン管理してくれません。 中身が空のディレクトリをgitのバージョン管理下に入れるためには、当該の空ディレクトリの中に .gitkeep というファイルを作成してからgitで管理します。 実例 Railsのアプリケーションを新しく作成する場合を例に用います。 $ rails new test_application $ cd test_application $ ls -l vendor/plugins (vendor/pluginsは中身が空なので何も出力されません) 上のように、vendor/pluginsは中身が空です。 このディレクトリをgitの管理下に入れるために、次の
Railsの各種サーバーの速度ベンチマーク: Pound、Varnish、Nginx、Unicorn、Mongrel RailsのアプリをPound、Varnish、Nginx、Unicorn、Mongrelを使用して動かした際の速度ベンチマーク。以下の構成での同一Railsアプリをhttperfでベンチマークした結果をまとめます。 Pound -> Varnish -> Nginx -> Unicorn * 2 Varnish -> Nginx -> Unicorn * 2 Nginx -> Unicorn * 2 Mongrel (Rails.env == 'development') node.js (Express + Socket.IO) 全体の構成Poundを80番ポートを公開し、Varnishを81番ポート、nginxを8080番ポート、Unicornの2プロセスをsocke
node.js上でコードを書くため、JavaScriptをしっかり復習したりnode.jsの制御フローを知るための読むべきページのリストです。 JavaScriptそのものの復習http://ejohn.org/apps/learn/John Resigさんの書かれたチュートリアルがわかり易いと思います。 JavaやRubyなどの言語を普段使っている方で、JavaScriptのプロトタイプベースのオブジェクト指向に親しみのない方は一読です。またJavaScriptに詳しい方も、GoogleのClosureでコードの最適化を行う際に問題を起こしにくいinheritanceを書くために、Michael Bolinさんの「Inheritance Pattern in JavaScript」を読んでみることをすすめます。http://www.bolinfest.com/javascript/inh
DHHさんのtweetによれば、5月21日あたりにリリースされたrake 0.9はrailsやその他のものと種々の問題を起こすそうです。また「Installing Rails 3.1」でも、rakeを0.8.7や0.9から0.9.1にアップデートすることを薦められています。そこで、rakeを0.9.1にアップデートする方法をまとめます。 まず自らの環境にインストールされているrakeと、現在使用しているrakeのバージョンを調べてみます。使用している環境にインストールされている全てのrakeをリストアップするには、tune66:~ foo$ gem list rake *** LOCAL GEMS *** rake (0.9.0, 0.8.7 ruby) tune66:~/rails3/basics/blog1 sakaida$私の場合は0.8.7と0.9.0の2つをインストールしていまし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く