Rails はエンタープライズの世界で主流になるか (2008/03/29) Rails 2.0 ベンチマーク (2008/03/30) テスト駆動開発とデバッグコード (2008/04/07) Git or Mercurial (2008/04/22) RESTful Ruby on Rails -- その美しさと難しさ (2008/04/23) RESTful Ruby on Rails -- 単数と複数 (2008/04/24) Rails のソースコードを読む (2008/05/02) sudo: no passwd entry for app! (Cap...
require 'rubygems' require 'spork' #uncomment the following line to use spork with the debugger #require 'spork/ext/ruby-debug' Spork.prefork do # Loading more in this block will cause your tests to run faster. However, # if you change any configuration or code from libraries loaded h...
require 'digest/md5' class Bird attr_accessor :name private def digest(food) d = Digest::MD5.new d 親クラスで edible? メソッドを定義することで、eat メソッドを簡略化しています。 筆者の模範解答は以下の通りです。 require 'digest/md5' class Bird attr_accessor :name private def digest(food) d = Digest::MD5.new d 共通部分を抜き出すためにブロック を利用していま...
ゴールデンウィーク中の5月5日にRails 3.1 beta1がリリース されました。 派手な点としてはJQuery, CoffeeScript, Sassなどをデフォルトして採用したことが挙げられますが、私が注目しているのはActive Recordに加えられたassign_attributes メソッドです。 その基本的な役割は、昔からあるattributes= メソッドと同じです。たとえば、User モデルとusers コントローラがあって、users#update アクションが次のように書かれているとします。 def update @user = User...
Rails 2.0 がインストールできましたので、早速、新規アプリケーションを作ってみましょう。 > rails sample コンソールに次のように表示されて、アプリケーションが作成されました。 create create app/controllers create app/helpers create app/models (中略) create log/production.log create log/development.log create log/test.log 一見すると Rails 1.2.x の時と変わっていないようですが、script/...
この前のエントリー では、Rails 3.1で登場した assign_attributes という渋いメソッドについて書きました。 今回紹介するのも渋い新仕様です。その名も has_secure_password 。 いま、User というモデルがあるとします。データベーステーブル users には name password_digest という2つのカラムがあります。いずれも文字列型です。 app/models/user.rb を次のように書き換えます。 class User < ActiveRecord::Base has_secure_password e...
Ruby on Railsでは、データベーステーブルの主キーとしてidというカラムを使うのがデフォルトです。 誤解される方も多いのですが、もちろん主キーの名前は変更できます。たとえば、User モデルに対応するusers テーブルの主キーがuid である場合、次のように書けばOKです。 class User < ActiveRecord::Base self.primary_key = "uid" end 本稿のテーマからは外れますが、テーブルの名前も指定できます。テーブルuser_master をUser モデルで取り扱いたいなら、次のように書きます。 clas...
hinagiku-volume1.zip (145.6 KB) -- サンプルアプリケーションHinagikuのソースコード。第1巻終了時の形。 hinagiku-volume2.zip (164.5 KB) -- サンプルアプリケーションHinagikuのソースコード。第2巻終了時の形。 hinagiku-volume3.zip (99.7 KB) -- サンプルアプリケーションHinagikuのソースコード。第3巻終了時の形。※ ファイルサイズが第2巻終了時より小さいのはjQueryのソースコードが除外されたためです。 shelf.zip (105.5 KB)...
そこで、神戸セミナーでの経験を踏まえて、Rails 3.1 3.2 での開発環境を整える手順をまとめておきます。対象 OS は、Windows XP/Vista/7 です。「手順通りやったけどうまく行かなかった!」という方は、Windows の種類を明記の上、[email protected] までメールでお問い合わせください。また、「いちおうインストールできたけど、微妙に説明通りではなかった」という経験をした方も同アドレスまで情報をお寄せいただけると助かります。
Rails本番環境構築ガイド 『改訂新版 基礎Ruby on Rails』 のサンプルアプリケーションasagaoを、Linuxサーバーにインストールして公開する手順を説明します。 対応するディストリビューション: CentOS 6.2 Ubuntu Server 12.04 LTS Ubuntu Server 10.04 LTS 目次 VirtualBoxによる仮想マシンのインストール MinGWのインストール (Windowsユーザー向け) サーバーの準備(CentOS 6.2編) サーバーの準備(Ubuntu Server 12.04 LTS編) サーバーの...
前回 は、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 'sqlite...
2010年4月13日、Ruby on Rails 3.0 Beta 3 がリリースされました。 プログラミング言語 Ruby で記述されたもう一つの Web アプリケーション開発フレームワーク Merb との「統合」が発表されたのは、2008年12月23日のことでした。それから1年4ヶ月か経過し、ようやく Rails 3 が生まれ出ようとしています。 Rails 2.3 から何が変わって、何が変わらないのでしょうか。 また、バージョン 3.0 の登場をきっかけに Ruby on Rails の学習に挑戦(あるいは再挑戦)する方は何に気をつければよいでしょうか。 こ...
今回はあまり具体的な作業内容には立ち入らずに基本的な流れだけを説明します。例として、架空の企業サイトを制作することにしましょう。 最初にすることは、サイトの企画書や設計書をよく調べて、サイトを構成するページのデザインをいくつかのパターン に分類するという作業です。Railsで作るかどうかにかかわらず、これは常に必要な手順ですね。 例えば、プレスリリースやIRのページは一定の規則に従ったページデザインになっているはずです。これらをパターンとして認識し、整理してください。パターンの数が多ければ更にカテゴリーに分ける必要があるかもしれません。ただし、後で変更できるので、...
Ubuntuで初めてRubyやRailsに挑戦する方のために、最新の Ruby 1.9.3 と Ruby on Rails 3.2 のインストール手順をやや詳しく説明します。 なお、本稿ではRubyのインストールにrbenvを利用します。apt-getでインストールされるRubyはバージョンが古いので、(手順がちょっと複雑ですが)本稿の方法をお勧めします。また、rbenvを利用すると、プロジェクトごとにRubyのバージョンを簡単に切り替えられるというメリットもあります。 本稿が対象とする OS は Ubuntu 11.10 です。「手順通りやったけどうまく行かなか...
前回 は、タスク管理ツールの要となる tasks コントローラのスケルトンを生成しました。 今回は、ビューを整えていきましょう。 レイアウト エディタで app/views/layouts/application.html.erb を開いてください。初期状態は次のようになっています。 <!DOCTYPE html> <html> <head> <title>Nchak</title> <%= stylesheet_link_tag :all %> <%= javascript_include_tag :defaults %> <%= csrf_meta_tag %...
Ruby on Rails 3.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました 【Rails 雑感】 (2012/04/22) Ruby on Railsで複合キーを扱う(7) -- 補遺 【Rails 雑感】 (2012/04/01) Ruby on Railsで複合キーを扱う(6) -- 最終回 【Rails 雑感】 (2012/03/31) Ruby on Railsで複合キーを扱う(5) 【Rails 雑感】 (2012/03/29) Ruby on Railsで複合キーを扱う(4) 【Rails 雑感】 (2012/03/28...
class PeopleController < ApplicationController def index @people = Person.all end def show @person = Person.find(params[:id]) end def new @person = Person.new end def edit @person = Person.find(params[:id]) end def create @person = Person.new(params[:person]) if @person.save redirect_...
Rails 3.2.3ではwhitelist_attributesの設定が必要 この記事は『改訂新版 基礎Ruby on Rails』の読者サポートのために書かれたものです。 読者サポートページに戻る 2012年3月30日に公開されたRails 3.2.3では、config\application.rbのwhitelist_attributesの設定が、デフォルトでtrueに変更されました。これは、最近問題になったMass Assignment(ハッシュによるモデルの属性の一括設定)関連のセキュリティ対策向上のためです。 Rails 3.2.3でアプリケーションを...
date = Date.new(2010, 1, 1) %w(robot automobile ship).each do |code| Department.create!({ code: code, name: code.capitalize, started_on: date, ended_on: nil }, without_protection: true) end %w(alpha bravo).each_with_index do |code, index| Product.create!({ code: code, started_on: date...
Capistrano とは何か。それは、デプロイメントのツールである。 デプロイメントとは何か。Web アプリケーションについて言えば、それは以下のようなタスク全般を指す言葉である。 アプリケーションを本番サーバにインストールすること。あるいは、最新版に更新すること。 Web サーバを起動、再起動、停止すること。 Web サイトをメンテナンス中にすること。あるいは、通常の状態に戻すこと。 世の中に向けて Web アプリケーションを公開しているなら、こうしたタスクは日常茶飯事である。 最初は少し面白いけれど、基本的な退屈な作業だ。 怠惰を美徳とする我々プログラマは、...
Railsアプリケーションの中で非同期処理 (バッチ処理)を実現したいことがあります。例えば、こんな場合です。 ユーザーが「送信」ボタンを押したら数千通のメールを送る。 数千通のメールを送るにはかなり時間がかかるので、その処理は後回しにして、ユーザーにはすぐにレスポンスを返したいところです。 非同期処理を行うためのRubyライブラリとしてはBackgrounDRb やdelayed_job などが有名ですが、もう一つ有望な選択肢としてResque というのがあることを最近知りました。 と言っても、私が知らなかっただけで、RubyGems.org によれば11万回以...
# coding: utf-8 require 'spec_helper' describe Department do let(:department0) { FactoryGirl.create(:department, code: "robot", name: "Department0", started_on: Date.new(2000, 1, 1), ended_on: Date.new(2002, 1, 1)) } let(:department1) { FactoryGirl.create(:department, code: "robot", n...
今回からしばらく「確認画面」をテーマにして話を続けます。 タスクの新規作成フォームに入力して「次へ」をクリックすると、入力内容をユーザーに確認させる画面が表示されて「保存」ボタンをクリックすると実際にタスクがデータベースに保存され、「戻る」ボタンをクリックすると新規作成フォームに戻る、という流れを実装します。 例によって、ルーティングの変更から。 $ edit config/routes.rb ActionController::Routing::Routes.draw do |map| map.root :controller => 'top', :action...
はじめる!Rails3 第3巻について で「あと半月ぐらいで書き上がるかな」と書いてから2ヶ月が経過してしまいました…。 本業である技術コンサルティングとWeb開発の方で急に忙しくなっていたところへ、『改訂新版 基礎Ruby on Rails』 の校正作業が重なってしまいました。さらには、自宅の引っ越しまですることになり、2月はちょっと疲れました。 『はじめる!Rails3 (3)』の方の執筆を今日から再開します。 執筆途中でRailsのバージョンが3.1から3.2に上がったので、前半部分も多少は直す必要がありそうですが、希望的観測ではあと半月ぐらいで終わるかな、...
Mac OS X 10.7 (Lion) の場合 メニューバー左端の「アップルメニュー」から「App Store」を選択します。 App Store ウィンドウの右上にある検索ボックスを使って「xcode」を検索します。 「Xcode」をクリックし、次のページで「無料」ボタンをクリックして Xcode をインストールします。 Mac OS X 10.6 (Snow Leopard) の場合 ブラウザで http://developer.apple.com/jp/ を開きます。 「Mac Dev Center」をクリックします。ここから先は英語です。 Apple I...
Ruby on Railsの開発しかしないのなら、http://netbeans.org/downloads/index.html から「すべて」と書いてあるバンドルをダウンロードして、インストールするときに「カスタマイズ」ボタンをクリックして「IDEベース」以外の項目を外すといいでしょう。 エディタのフォントがぎざぎざで汚いなと感じたら、NetBeansをインストールしたディレクトリにあるetc/netbeans.confのnetbeans_default_optionsに「-J-Dawt.useSystemAAFontSettings=lcd」というオプション...
『改訂新版 基礎Ruby on Rails』 読者サポートページ 2012年3月5日発売予定 ただいま準備中... このページは、弊社監修の『改訂新版 基礎Ruby on Rails』の読者サポートページです。『基礎Ruby on Rails』(2007年10月)についての情報をお探しの方はこちら へ。 現在のRailsの最新バージョンは3.2.2 、Rubyのバージョンは1.9.3-p123 です。本書のサンプルは、問題なく動作します。 サンプルソースのダウンロード rails3book-120301.zip 仮バージョンです。ダウンロードは発売後にお願いします...
この連載では、簡単なRailsアプリケーションを作りながらCoffeeScriptとJQueryについて学んでいきます。 Webページの中のある区域をユーザーがダブルクリックすると正方形が現れ、それをマウスでドラッグしたり、ゴミ箱に捨てたりする、というアプリケーションを作ります。まったく実用的ではありませんが、お許しください。 Railsアプリケーションの名前は「Toraja」とします。 本連載で紹介する手順を実際に試してみるには、Ruby 1.9.3とRails 3.1/3.2がインストールされている環境が必要です。 本連載での記法 本題に入る前に、本連載での記...
先日の記事Rails 3.x 時代のテストフレームワーク で、私は「Railsのテストを取り巻く状況が複雑に拡散しつつある」と書き、デファクトスタンダードがまだ現れていないんじゃないか、ということを示唆しました。 その後、この件について他の人が書いているのを更に読んだり、実際にフレームワークを使ってみたりして、わかったことや考えたことをまとめてみようと思います。 まず、Railsで使用できる代表的な4つのテストフレームワーク Test::Unit, RSpec , Shoulda , Cucumber の基礎知識と相互関係について。 Test::Unit は、Ru...