2012年01月03日

■【Mac】【Rails】rake test が fail その1

RailsによるアジャイルWebアプリケーション開発 第4版にて、 何故かテストが通らないという原因不明事件が自分の中で発生してます。

「7.2 モデルのユニットテスト」の product price must be positive と image url が正しい値なのにvalid?でfalesが返るという・・・
まぁ、こんな感じで

ProductTest
test_image_url FAIL
fred.jpg shouldn't be invalid
Assertion at /Users/shiori/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.3/lib/active_support/testing/setup_and_teardown.rb:35:in `block in run'
test_product_attributes_must_not_be_empty PASS
test_product_is_not_valid_without_a_unique_tilte PASS
test_product_is_not_valid_without_a_unique_tilte_-_l18n PASS
test_product_price_must_be_positive FAIL
Failed assertion, no message given.
Assertion at /Users/shiori/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.3/lib/active_support/testing/setup_and_teardown.rb:35:in `block in run'


で、テスト部分はどうなっているかというと

test "product price must be positive" do
product = Product.new(title: "My Book Title",
description: "yyy",
image_url: "zzz.jpg")
product.price = -1
assert product.invalid?
assert_equal "must be greater than or equal to 0.01",
product.errors[:price].join(';')

product.price = 0
assert product.invalid?
assert_equal "must be greater than or equal to 0.01",
product.errors[:price].join(';')

product.price = 1
assert product.valid?
end

def new_product(image_url)
Product.new(title: "my book title",
description: "yyy",
price: 1,
image_url: "#{image_url}")
end

test "image url" do
ok = %w{fred.jpg fred.png RFED.JPG FRED.Jpg http://a.b.c/x/y/z/fred.gif}
bad = %w{ fred.doc fred.gif/more fred.gif.more}

ok.each do |name|
assert new_product(name).valid?, "#{name} shouldn't be invalid"
end

bad.each do |name|
assert new_product(name).invalid?, "#{name} shouldn't be valid"
end
end


モデルは次のとおりです。

# encoding: utf-8
class Product < ActiveRecord::Base
has_many :line_items
has_many :orders, through: :line_items

before_destroy :ensure_not_referenced_by_any_line_item

validates :title, :description, :image_url, presence: true
validates :price, numericality: {greater_than_or_equal_to: 0.01}
validates :title, uniqueness: true
validates :image_url, allow_blank: true, format: {
with: %r{\.(gif|jpg|png)$}i,
message: 'はGIF,JPG,PNG画像のURLでなければなりません'
}
validates :description, length: {
minimum: 10,
message: 'は10文字以上でなければなりません'
}

private

# この商品を参照している品目がないことを確認する
def ensure_not_referenced_by_any_line_item
if line_items.empty?
return true
else
errors.add(:base, '品目が存在します')
return false
end
end

end


テキスト通りにやっているはずなのだが、何故か通らない。
valid?の部分をinvalid?にすると通るんだが・・・いや、おかしいだろ!
アプリではjpgやpngでエラーがでることなくデータベースに登録できました。
もちろん、拡張子がjpg/png/gif以外ならエラーを返します。
値段でもおなじです。
う〜ん、なんでだ??


posted by shio_chan at 03:48| Comment(0) | TrackBack(0) | Rails | このブログの読者になる | 更新情報をチェックする

2011年11月14日

■【Heroku】【Rails】Rails アプリ公開中

コツコツと研究や講義の合間につくっていた Rails アプリがようやくお披露目です!
うん、全然できてないけど・・・基本的な部分はできたということで。

http://shiori-blog-test.heroku.com/

ブログっぽいものを作ってみました!(わーわー、パチパチパチ)
一般ユーザーは見るだけです。ログインをすれば記事を新規作成できたり、編集できたり、削除できたりします。
そのうち、コメント機能や画像も投稿できるように改良する予定です。
その前にデザインをなんとかしないと・・・という気持ちにもなってたり。

使ってみたい方は、Twitter などでご連絡いただければ、ID と PW を発行いたします。
(まだ、発行機能がないんですよ;;そのうち、ちゃんと作るよ!)



posted by shio_chan at 13:17| Comment(0) | TrackBack(0) | Rails | このブログの読者になる | 更新情報をチェックする

2011年11月08日

■【Mac】【Rails】Heroku の使い方

MacBookAir 環境
Lion 10.7.2
ruby 1.9.3 (rvm使用)
gem 3.1.11


最近、噂(なのか?)の Heroku を使い始めてみました。
Ruby on Rails の本番環境が無料〜使えるのは嬉しい!!
ということで、Heroku の導入〜使い方まで覚書程度でまとめてみました。
参考程度にしてください。

Heroku の公式サイトより、アカウントの登録を行います。
画面右下にある、「Sing up」をクリックルすると登録画面に移動できます。
メールアドレスを入力して、しばらく経つと Heroku から招待メールが届きますので、URLをクリックしてアカウント登録。
おめでとう、これで Heroku が使えるようになりました。

では、Heroku を使うために環境を整えます。
1. git と Heroku ツールのインストール
Homebrew を使用している方なら git はインストール済みだと思います。
git がない方は Hombrew か MacPorts などからインストールをお願いします。

で、Heroku 関連のツールが必要みたいなので MacGems からインストールします。

$ gem install heroku


2. ssh 公開鍵を作成
github の手順を参考にする事をおすすめします。
説明は割愛で!
github 参考

3.Rails アプリの下準備
Gemfile に次のものを追加しとくと幸せになれるかも?
まぁ、Heroku で Rails アプリが動かない場合に追加してみてくださいということで。

# データベース 関係
gem 'pg'
# javascript 関係
gem 'execjs'
gem 'therubyracer'


4.Heroku で公開
まず、公開したい Rails アプリのディレクトリに移動します。

$ cd hoge # rails new hoge とかで作ったディレクトリ

gitリポジトリを作成しコミットします。

$ git init
$ git add .
$ git commit -m "コメントを入力してね"

heroku 上で公開するためにアプリケーションの登録を行います。
初回ですと、ssh公開鍵やパスワードが聞かれたと思うのでそれも入力してください。

$ heroku create --stack cedar すきなアプリケーション名

あとは、gitでプッシュすれば・・・heroku にアプリを追加することができます!

$ git push heroku master


5. Rails アプリを Heroku で動作させる。
データベースを使用していない場合ならば、このままでも動きます。
データベースを使用しているならマイグレードをしましょう!
(自分はこの作業を知らなくてしばらく悩みました)

$ heroku rake db:migrate

次のコマンドでHeroku 上にある Rails アプリをブラウザで表示することができます。

$ heroku open

これで、動けばOKです。


++ おまけ ++
heroku の詳細を忘れたときに便利なコマンド。

$ heroku info
=== shiori-xxx
Web URL: http://shiori-xxx.heroku.com/
Git Repo: git@heroku.com:shiori-blog-test.git
Dynos: 1
Workers: 0
Repo size: 9M
Slug size: 11M
Stack: bamboo-mri-1.9.2
Data size: 80k
Addons: Basic Logging, Shared Database 5MB
Owner: hogehoge@gmail.com




posted by shio_chan at 08:14| Comment(1) | TrackBack(0) | Rails | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。