Ruby

Windows では Ruby 2.2.1 + Rails 4.2.1 はまだ使えない

Ruby を新しくしようと思って、先日リリースされた RubyInstaller で Ruby 2.2.1 を入れて Rails をインストールしたのだが…。sqlite3 のバイナリがないところは百歩譲って良しとしよう。それは自前でビルドできる。しかし、何やら nokogiri なるものが悪さ…

Rails の初期データ投入に YAML 形式を使う

Railsの初期データ投入時のデータをYAMLで指定するには - pblog おおっ、これは便利 !

Rails で複合主キーを扱う

ここが参考になりそう。 Railsで規約に沿わない古いデータを扱う - Qiita

Heroku に Rails アプリケーションをデプロイするまで

GitHub のアカウント取得と GitHub for Windows のインストール The world’s leading software development platform · GitHub まぁこれをしないと始まりませんのでw2014/02/22 追記 : Aptana Studio 3 に内蔵の Git を使うという方法もある。Eclipse Kepler…

64bit 版 Ruby 2.0 で Rails 4 を使う

1. 前回の記事を参考に 64bit 版 SQLite3 をビルドし、sqlite3.dll をパスの通っているところに配置する(個人的には C:\SQLite のように別フォルダを作ってそこにパスを通すのをお勧め)。 2. 64bit 版の Ruby 2.0.0-p247(現時点での最新版)をインストール。 …

的外れなコメント達に突っ込んでみる

今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 – sumyappRails のネガキャンですか、と思って読んでみたがとんでもない、ちゃんとした記事で好感が持てた。しかしコメントがあまりに的外れちゃんなのでかいつまんでツッコミを…

中間テーブルを用いた多対多の関係(その 6)

実際の出力例です。

中間テーブルを用いた多対多の関係(その 5)

前回からの続きです。モデル同士のアソシエーションを定義します。 class Customer < ActiveRecord::Base has_many :sales has_many :products, :through => :sales end class Product < ActiveRecord::Base has_many :sales end class Employee < ActiveRec…

中間テーブルを用いた多対多の関係(その 4)

次に、中間テーブルが外部キー以外のデータを持つ場合について考えます。使用するアプリは 顧客(customer) 商品(product) 従業員(employee) 支店(branch) 売上(sale) のデータを持っているとします。モデルの作成から始めましょう。 rails g model customer …

関連するモデルを絞り込む

状況 従業員は本店・支店の少なくともいずれかに属し((両方に属する場合もあり、その関連は従業員(employees)と支店(branches)を中間テーブル branches_employees で結びつけている。))、上司(manager)と部下(assistants)がアソシエーションで紐付けられてい…

中間テーブルを用いた多対多の関係(その 3)

今度は License の側から Employee のリストを取得してみましょう。 rails g controller licenses indexapp/views/licenses/index.html.erb <h1>資格取得者一覧</h1> <table border> <thead> <tr><th>資格</th><th>取得者</th></tr> </thead> <tbody> <% @licenses.each do |l| %> <tr> <td><%= l.name %></td> <td><%= l.employees.empty? ? 'なし' : l</td></tr></tbody></table>…

中間テーブルを用いた多対多の関係(その 2)

前回はアソシエーションを定義するところまで進めました。今回はそのアソシエーションを実際に利用してみます。まずはコントローラーから。 rails g controller employees index showモデルに対応するテンプレートを作成します。 app/views/employees/_emplo…

中間テーブルを用いた多対多の関係(その 1)

今「一人の従業員が複数(0 個も含む)の資格を持っている」「ある資格を持っている従業員が複数(0 人も含む)いる」という状況を考えます。これは多対多の関係ですが、RDBMS では多対多の関係をそのまま表現することができないので中間テーブルを用います。ま…

Ruby で階乗

初心のときにありがちな書き方は def fact(n) if n == 0 then 1 else n * fact(n - 1) end end n が負のときどうするの、っていうのはとりあえず置いといて、まぁ再帰を知ってるのはいいことだけど、Ruby ならではのうまい書き方がある。 class Integer def …

規則的な配列を簡単に生成する

例えば 100 以下の偶数の配列を作りたければ even = (0..50).map{ |i| i * 2 } とすればいい。 [1,10,100,1000,10000,100000,1000000] のような 10 のべき乗の配列も (0..6).map{ |i| 10 ** i } で O.K.2013/07/14 追記 : 100 以下の偶数、ということをもう…

Ruby 2.0.0 で Rails を使うときの注意点

Rails をインストールしてアプリケーションを作る(rails new)とき、自動的に bundle install が走って、その際に sqlite3 もインストールされるのだが、現状 rubygems で配布されている sqlite3 には Ruby 2.0.0 向けのバイナリが含まれていないため、そのま…

has_one と belongs_to、どっちがどっち ?

Rails で 1 対多の関係を示すときは 1 の方に has_many、他の方に belongs_to をつければよいのでわかりやすいのだが、1 対 1 のときはどっちが has_one でどっちが belongs_to なのか混乱することがままある。その場合は「主従関係」を考えてみるといい。主…

bundle install でエラー

Ruby on Rails を使っていて rails new した後に自動で走る bundle install がエラーを出してコケるので原因を調べていたところ、こんな記事に当たりました。bundle install時にエラー - マオの徒然開発日誌ほほぅ…と思いながら Gemfile の source 'https://…

先日のお題を Ruby on Rails で再現した(ソース公開・その 2)

View で使う変数を定義したいので Controller から作る。app/controllers/major_cities_controller.rb class MajorCitiesController < ApplicationController def index @cities = City.all end def show @city = City.find(params[:id]) end end

先日のお題を Ruby on Rails で再現した(ソース公開・その 1)

まずは Model をポチポチと。 > rails g model district name:string --timestamps=false > rails g model city name:string pref_name:string designated_day:date area:float population:integer district_id:integer --timestamps=false

先日のお題を Ruby on Rails で再現した

先日お題として出した Web アプリケーションを早くも Ruby on Rails で再現してしまいました。ソースは近日中に公開します。

日付のフォーマット

Ruby には 日付や時刻の表示形式を指定できる strftime メソッドが用意されているが、例えば今日の日付だと # coding: utf-8 require 'date' d = Date.today puts d.strftime('%Y 年 %m 月 %d 日') で実行すると 2013 年 01 月 09 日と表示されてしまう。こ…

RESTful なインターフェースを備えた Web アプリケーション(その 7)

では前回作ったアクションが正常に動作するか見てみましょう。前回、新規にデータを登録した状態から。しかしここで問題発生。「いろは商事」ではなく「いろは物産」が正しい名称でした。修正しなければなりません。詳細を開きます。「編集」ボタンと「削除…

RESTful なインターフェースを備えた Web アプリケーション(その 6)

いよいよ edit, update, destroy を作ります。データの編集と削除は詳細画面からできるようにしたいので、show の View をまず修正します。sample/app/views/customers/show.html.erb <h1>顧客詳細</h1> <table border> <tr><th>顧客 ID</th><td><%= @customer.id %></td></tr> <%= render @customer %> </table> <table> <tr> <td><%= </td></tr></table>…

RESTful なインターフェースを備えた Web アプリケーション(その 5)

いよいよ残る edit, update, destroy を作っていきますが、その前に使いまわしの出来る部分を部分テンプレートにしておきます。sample/app/views/customers/_customer.html.erb <tr><th>顧客名</th><td><%= customer.name %></td></tr> <tr><th>連絡先</th><td><%= customer.phone %></td></tr> sample/app/views/cu…

RESTful なインターフェースを備えた Web アプリケーション(その 4)

実行してみる いつものコマンドでサーバを立ち上げて実行してみましょう。「新規登録」というボタンが追加されていますね。さっそくクリックしてみましょう。登録用のフォームが出てきました。

RESTful なインターフェースを備えた Web アプリケーション(その 3)

これでおしまいだと思った ? 残念さやかちゃんでした ! wせっかくだからアプリケーションっぽくどんどん作り込みましょう。今度は新規登録フォームを作ります。その前に、自動生成されたテストコード用のファイルを修正しておきます。 sample/test/functiona…

RESTful なインターフェースを備えた Web アプリケーション(その 2)

ルーティングの確認 sample ディレクトリで > rake routes を実行してみてください。 customers GET /customers(.:format) customers#index POST /customers(.:format) customers#create new_customer GET /customers/new(.:format) customers#new edit_cust…

rails コマンドの省略形

おまけ。 rails generate → rails g rails server → rails s rails destroy → rails d のように rails コマンドには省略形があります。覚えておくと便利 ?

RESTful なインターフェースを備えた Web アプリケーション(その 1)

前回までは「RESTful なインターフェース」ということを考えずにとりあえずアプリケーションを作りましたが、Rails の世界ではこの「RESTful なインターフェース」に沿ってルート設計をするのが基本であるとされています。REST とは「REpresentational State…