Ruby on Railsの最新版となる「Ruby on Rails 3.2.0」が公開された。Ruby on RailsはRubyで開発されたWebアプリケーションフレームワーク。フレームワークのみならず、開発ツールを活用した高速なシステム組み上げを実施するという仕組みを採用しており、短時間にWebアプリケーションを開発できるという特徴がある。 「Ruby on Rails 3.2.0」は大規模アプリケーションを開発している場合には、開発効率の大幅な向上が期待できる。再読み込みするクラスが変更されたクラスのみに限定されるようになったことで、迅速な作業が実現されている。また、新しいルーティングエンジン「Journey」の導入によるルーティング処理の高速化も注目点といえる。 Ruby on Rails 3.2系はRuby 1.8.7をサポートする最後のバージョンになる見通し。開発は次期メジャ
1月20日、Ruby on Railsの最新版「Ruby on Rails 3.2」がリリースされた。新たに「Faster dev mode」(高速開発モード)が加わり、大規模アプリケーションでは速度に歴然とした差が出るという。 Ruby on RailsはRuby向けのWebアプリケーションフレームワーク。MVC(Model-View-Contorol)アーキテクチャを持つフレームワークで、「設定より規約」や「同じことを繰り返さない」などの理念を持ち、開発者の生産性向上を目的に掲げている。 Ruby on Rails 3.2は、2011年8月にリリースされた3.1以来のメジャーリリースとなる。最大の特徴は、「Faster Dev Mode」という高速モードの導入。「Active Reload」に着想を得た機能で、開発時に全コンポーネントをリロードするのではなく、変更のあったクラスのみをリ
こんにちは、ほりいです。風邪が流行っていて体調管理が大変なシーズンですね。 先週 “Rails 3.2.0 がリリースされました”:http://weblog.rubyonrails.org/2012/1/20/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store ね。 Rails を使った Web 開発チームでは 3.2 を使い始めていますが、社内でも結局どう変わるの? という声がありましたので、勉強がてらみんなで “Ruby on Rails 3.2 Release Notes”:http://edgeguides.rubyonrails.org/3_2_release_notes.html を翻訳してみようという試みを行いました。その成果を公開したいと思います。 注意書き: * 1章「Upgra
Play Frameworkとは 「Play Framework」(日本語サイトはこちら)は、Rub on RailsライクなJavaアプリケーション開発フレームワークです。簡単なコマンドの実行でアプリケーションの雛形を構築し、手軽に開発をスタートさせることができます。構築されるアプリケーションの雛形はモデル、ビュー、コントロールの3つのパーツから構成され、データベースシステムとJavaの永続化機能によるモデル、テンプレートエンジンを利用したビュー、Javaプログラムで記述するコントロールをシームレスに連携させたアプリケーション開発を行うことが可能です。 Play Frameworkの大きな特徴のひとつは、JavaコードやHTMLファイル、テンプレートファイルなどを修正しても、コンパイルやサーバへのデプロイ、サーバの再起動などを一切することなく、ブラウザでWebサイトをリロードするだけで
Ruby作者のまつもとゆきひろ氏が、こんな呟きを残すニュースが伝わってきた。 ITMediaが、Twitterが検索フロントエンドをRuby on RailsからJavaに切り替えた結果、検索結果の待ち時間が1/3になったと報じている。Twitterでは、2011年春から以下のようにシステムを改善しており、(2)から(3)への移行で速度が大幅に改善したようだ。 Ruby on Rails ⇔ MySQL Ruby on Rails ⇔ Lucene(Java) Ruby on Rails ⇔ Blender(Java) ⇔ Lucene(Java) Blender(Java) ⇔ Lucene(Java) ※予定 1. RubyからJavaに乗り換えて速度向上の理由 公式ブログを見ている限り、3倍の応答速度と、10倍の同時接続が可能になった理由は、非同期I/Oに依存する所が大きいようだ。
Rmagickで画像編集・グラフ描写 Ruby on Rails Rmagickとは、ImageMagickという画像編集ソフトをRubyで動かせるようにしたもの。Ruby on Rails RmagickではRmagickを使って動的に画像、グラフを作成する基礎を、多くのサンプルを紹介しながら説明。基礎的なリサイズ、反転、回転はもちろん、画像にエフェクトをかけるサンプルも紹介。もちろん基礎的な画像の読み込み、保存サンプルもあります。 RMagickってなんだろう? RMagickは動的に画像を生成してくれる 環境を整えよう ImageMagickとRmagick、graffをインストール(for Linux) 画像を加工してみよう(取り込み、リサイズ、回転など) RMagickで画像の取り込み方法 RMagickで画像をリサイズする方法 RMagickで画像を反転、回転する方法 RMag
これまでテストした中で、いくつかの動作は、現状のままでは問題があることも分かってきた。その一つは、伝票の明細行を削除するところ。調子よく削除していくと、最後の1件も削除できてしまう。そして、伝票には明細行が無い状態になり、挿入する方法も無いことに気付き、途方に暮れる...。(挿入・削除・コピーのリンクが、明細行の中にあるので。) この問題に対して暫定的に、行削除の結果、明細行が0件の場合は、自動的に1行追加するようにして回避することにしてみた。そして今回は、コードを修正する前に、目指す状態のテストを書いてみた。 まずテスト # テスト: test/functional/journals_controller_test.rb require File.dirname(__FILE__) + '/../test_helper' class JournalsControllerTest < Ac
webアプリケーションは、結局のところ適切なHTML文書を返すサーバーなので、最終的にはレスポンスとして返すHTMLが予想通りであれば良いということになる。ところが、HTMLを比較する時には単純に文字列として比較するのは問題がある。ブラウザの描画には影響しないコメントや改行、スペース、タブが含まれているからだ。確認したいのはwebブラウザの描画結果が適切なこと、つまりHTMLの構造が適切かどうか。 その確認をするために、Railsには「assert_select」メソッドが用意されていた。assert_selecteを利用すると、CSSのセレクタで指定する要領でHTMLの構造が適切かどうか、効率よく調べることができる。assert_selectは幅広い応用力を持っている!が、ちゃんと理解して使いこなすのはちょっと大変そうだ。以下は自分がひたすら試してみた、例題とその動き。 書式 現在表示し
ここからは、「実際に動作するコードがあると想定して、そのコードが正しく利用できることを確認するためのコード」、すなわちテストコードを書いていきます。 ここでは、先ほど検討したUserとHitokotoの関連が実装できたと想定して、それぞれのクラスから、関連するクラスを取得するためのテストコードを書いてみましょう。 なお、今回実装する本番コードは、Ruby on Railsのアソシエーション機能を利用するだけのシンプルなものですので、テストコードを書くまでもないと感じられるかもしれません。しかし、本稿では実際のテストコード実装を含めた開発イテレーションを紹介するために、あえてテストコードを実装し、テスト実行の過程を追っていきます。 ユニットテストコードは[Railsエクスプローラー]のtsubuyakiプロジェクト以下、[テスト]-[ユニットテスト]以下に書いていきます。まずは、[ユニットテ
昨日の記事 続・Rails 3.x 時代のテストフレームワーク では、Rails で使用できるテストフレームワークの基礎知識と相互関係についてまとめました。 今日は、Test::Unit と RSpec と Shoulda を具体的に比較してみたいと思います(Cucumber については、別の機会に…)。 例として「変数 @total に文字列 '100' をセットすると、式 @total.to_i は 100 を返す」というテストケースを考えましょう。 純粋な Test::Unit ではこのように書きます。 require 'test/unit' class SimpleTest < Test::Unit::TestCase def test_should_return_100 @total = '100' assert_equal(100, @total.to_i) end end R
Javaな世界に10年以上どっぷりと浸かってきたが,Ruby on Rails(RoR)をやっていると「良く考えられているなぁ」と感心してしまう箇所が随所に見られる。とかくScaffoldやActiveRecordに関するコーディングに目が行ってしまいがちだが,僕個人的にはテストに関する環境が最も「おぉ」と感じている。 言うなれば,「JUnit + DbUnit + Cactus」な環境が標準で整備されている,ということだ。 JUnitについては,もちろんTest::Unitがそれに相当する。Test::Unit::TestCaseクラスを継承し,”test_“で始まる名前のメソッドを定義していくというのは,xUnitの流儀とほぼ一致している。JUnitで単体テストを行ったことがある開発者は,違和感なくTest::Unitでテストケースクラスを書いていけることだろう。 Web+DBアプリケ
Rails でバッチ処理といえば、 3.0 未満では script/runner、Rails 3.0 以上では script/rails runner コマンドがありますが、環境を全部ロードするのでスタートアップがクソ重いですよね。daemon_generatorとかを使うという手もありますが、やや大仰だなぁ、という時に手軽な方法をお教えします。 簡単に言うと、actionに処理内容を書いて、ローカルのスクリプトからHTTPアクセスして叩く、という方法です。手動やcron/crontabで処理しようと思ってたなら使えると思います。 app/controllers/hoge_controller.rb class HogeController < ActionController::Base def batch # IP制限しないと怖いですよ…… raise NotFoundError.ne
前回は、Rails 3.0 で導入された新しい Gem パッケージ管理ツール Bundler を紹介しました。 今回と次回はユーザー認証の仕組みをアプリケーションに追加します。 Devise Devise を利用すると、メールアドレスとパスワードによるユーザー認証機構を Rails アプリケーションに簡単に組み込むことができます。 現時点(2010/08/30)での最新版は 1.1.2 です。Gemfile を次のように修正してください。 source 'http://rubygems.org' gem 'rails', '3.0.0' gem 'sqlite3-ruby', :require => 'sqlite3' gem 'will_paginate', '3.0.pre' gem 'devise', '1.1.2' 続いて、Bundler でインストールします。 % bundle
本題に入る前に、そもそも RJS とは何なのかを説明すると、本来 jQuery の $.ajax() などを使ってごりごり書かないといけなかった JavaScript による非同期通信をフレームワーク側で吸収して、通常の html ビューのレンダリングと同じ感覚で記述できるように用意されたものです。 この「通常の html ビューのレンダリングと同じ感覚」というところは重要なポイントです。コントローラ内にも RJS のメソッドは直接記述できるのですが、本家 Rails のガイドラインでは以下のように勧告しています。 Placing javascript updates in your controller may seem to streamline small updates, but it defeats the MVC orientation of Rails and will ma
これまで、Ruby on Railsでメッセージなどを日本語化する場合、Ruby-GetTextを用いたり、Gibberishなどのプラグインを用いたりする必要がありましたが、11/21にリリースされた2.2で標準で国際化(i18n)に対応したみたいです。 New Rails 2.2 i18n defaults http://weblog.rubyonrails.org/2008/11/18/new-rails-2-2-i18n-defaults コンソールで国際化を試す ここでは、簡単に国際化フレームワークを試してみることにします。 まず、プロジェクトを作成します。 $ rails i18n_test create create app/controllers create app/helpers create app/models ... create log/development.
織田信長 ぼちぼち、元気にやっています。少し薬にも慣れた...んかなぁ。相変わらず食べられないけど。朝、指がこわばって文字なんて入力できなかったけど、それはほぼなくなった。関節もどこも痛くない。薬効いてきたんやろな。 で、ブログを書こうと言う気がまた起きてきた。 …
(注)この記事の動作確認環境はRC1です。 以前、Railsはデフォルトでtmp/sessionsにセッションファイルを作り続けるため、sessionsフォルダ内のメンテナンスが必要であるという記事を書きました(こちら)。Rails2.0ではデフォルトでCookieStoreという新しいセッション管理機構を用いるため、上記処理の必要がなくなります。 CookieStoreの特徴 クッキーで情報を持つため余分なIOがなくなり高速 セッションファイルの管理が不要 セッションデータが4kを越える場合はCookieOverflowエラー*1 デフォルト設定 environment.rbを確認すると、以下のような記述が追加されています。 config.action_controller.session = { :session_key => '_application_session', :secr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く