タグ

2013年5月6日のブックマーク (4件)

  • Rubyにインクリメンタル演算子がない理由は? - OKWAVE

    No.1の方のURLが端的なのですが、もう少し詳しく書いてみます。 Ruby での「数」は「数が格納された箱」ではなく「数」そのものです。 例えば String は「文字列が格納された箱」なので、<< の用な破壊的なメソッドを使い、foo = "0"; foo << "1"; p foo とすれば "01" と表示されます。また、foo = "0"; bar = foo; foo << "1"; p bar としても、bar は foo と同じ文字列が格納された箱を示しているので "01" が表示されます。この辺りは Array や Hash などの「何かを格納する箱のようなもの」でも同じですね。 さて、Ruby では Fixnum などが数字そのもののためこの様な破壊的な動作が出来ません。もし出来てしまうと、foo = 0; foo++ としたときに、そのスクリプト中にある全ての 0 が

    Rubyにインクリメンタル演算子がない理由は? - OKWAVE
  • rspecにファイルアップロードのテストを書く

    Railsさんアプリでファイルアップロードのテストの書き方です。 以下のようなアップロードしたファイルを/tmpの下に保存するコントローラーがあるとします。 class TestController < ApplicationController def index end def upload file=params[:file]['csv'] @filename = params[:file]['csv'].original_filename File.open("/tmp/#{@filename}","wb"){ |f| f.write(file.read) } end end このコントローラー用のviewを以下のような感じで用意します。 <% form_tag({:action => 'upload'},{:class=>'form',:multipart=>true}) do

  • Railsのモデルに複合一意制約を定義する方法、そしてうっかりハマる - 杉風呂2.0 - A Lifelog -

    Rails 3.0.4で複合一意制約を定義する方法は二通りあるようです。 1.ActiveRecordでモデルに一意制約を定義する 2.RDBMSで一意索引を作る 通常は両方実装するものと思われます。 次のようなモデルで確認します。 class CreateMultiples < ActiveRecord::Migration def self.up create_table :multiples do |t| t.string :key1 t.string :key2 t.string :key3 t.string :value t.timestamps end end def self.down drop_table :multiples end end まず1.の場合ですが、Stack Overflowにありました。 In Rails 2, I would have written:

    Railsのモデルに複合一意制約を定義する方法、そしてうっかりハマる - 杉風呂2.0 - A Lifelog -
    whitefox_105
    whitefox_105 2013/05/06
    uniquenessを複数選択剃る方法、複合キー
  • RSpecの標準Matcher一覧表 - 本当は怖いHPC

    追記2(2015/09/08)ありがたいことに、未だにこの記事をブックマークしてくださる方がいらっしゃいますが、2008年に書いた記事なのでご注意下さい。内容はアップデートしていません。私自身はすでにRubyを使っていません。 追記:古い情報ですので、記事の日付とお使いのRSpecのバージョンを見比べて、参考程度にご覧ください。大部分は通用するはずですが。 Matcherをいちいち調べるのが面倒になって、公式のリファレンスマニュアルは一覧性が低いから、自分で一覧表を作った。 RSpecそのものについては、スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)などをどうぞ。そのうちRSpec on Rails版も作る予定。 名前 not((should_notで使えるかどうかという意味。)) 意味・機能 == ○ ==演算子を利用して比較する。ex

    RSpecの標準Matcher一覧表 - 本当は怖いHPC