2008年7月29日火曜日

[Rails2.0.2]画像アップロード機能のテスト

最近テストばかりしてます・・・
テストしたい内容は分かるのにどうやって書けばいいのか分からない時ほど
もどかしいものはないですね;-;
今日は画像アップロード機能のテストのメモ。

class UserTest < ActiveSupport::TestCase
   
#画像アップロード機能のテスト(異常テスト)
  def test_image_upload
    user = User.new
    image = ActionController::TestUploadedFile.new(
      "#{RAILS_ROOT}/test/testdata_sizeover.jpg", 'image/jpg'
    )
    image.binmode #この記述がないと画像ファイルの読み込みがおかしくなる為注意※Windows環境のみ
    user.uploaded_image = image
    assert !user.valid?
    assert user.errors.on(:uploaded_image)
    assert_equal 'のサイズが大き過ぎます(最大64KB)。',
      user.errors.on(:uploaded_image)

  
end
end

※Userモデル、DBに画像保存する場合の記述です。

2008年7月17日木曜日

[Rails2.0.2]携帯電話から画像のアップロード・・・の後

これはもうメールから添付ファイルで送信してもらって、
それを読み込んで保存するって流れしかないらしいですが。
そこらへん説明すると長いんでまた後日^-^

で、アップロードした画像を僕はDBに保存して
imageアクションとかでリサイズしてsend_dataしてたわけなんですが
なんか携帯から画像が見れない現象が起きたんですよ。
PCからは見れるのにー;-;
何でかなーと画像のプロパティ見るとtext/html とかなってる・・・
ああーーー
Mobile on Rails 使ってるからですねwww
このプラグインはページの文字コードを変換するafter_filter が働いてるわけで、
画像も変換されてます^-^

もう!と思いながら
imageアクションはそのafter_filter を無効にしちゃいます。

class UsersController < ApplicationController
  skip_after_filter :after_filter_for_mobile, :only => [:image]

  def image
    画像リサイズ処理
    send_data処理
  end

end

これで幸せになれました^-^

[戯言]最近忙しい・・・

特にAruaですがwっうぇww
いや、仕事ももちろん忙しいっす。
ブログで書きたい事もあるけど、
書き出すと1時間ぐらいかかっちゃうんだよね・・・
そろそろ次のネタにいきますかね。

2008年7月8日火曜日

[Rails2.0.2]外部DB接続

みなさまお久しぶりです。
多少忙しいのもあり更新遅くなりますた。(Aruaがほとんどうぇw
今日は外部DB接続というのをしませう。
あんまり使い道はないけど、アクセスログなんかを外部でやって
バックアップ取りたいとか、そんな感じの時にでもいいんじゃないかな。うん

まず、scaffoldでアクセスログコントローラ作る。DBは外部で作る予定だからいらない
>ruby script/generate scaffold access_log --skip-migration

次にDB作成
>mysql

mysql> create database access_log character set utf8;

mysql> create table access_logs (id int auto_increment PRIMARY KEY, user_id int, created_at datetime, updated_at datetime);

これで環境はできました。

次にアプリ内設定

#database.yml 下部に以下追加

access_log:
adapter: mysql
encoding: utf8
database: access_log
username: root
password:
host: localhost

これで接続できる状態になりました。

次にModel

#access_log.rb
class AccessLog < ActiveRecord::Base
  establish_connection(:access_log)
end

以上で外部DB接続できるようになりました。
上記は全て妄想ですので、できるかどうかは保障できませn(ry
でも、簡単にできるはずです^-^