Here i've manage to debug the script running cucumber.
def create
@photo = Photo.new(params[:photo])
@photo.status = 'Uncategorized' if !user_signed_in?
@photo.md5sum = @photo.file.fingerprint
@duplicate = Photo.find_by_md5sum(@photo.md5sum)
* => debugger*
...
ruby-1.9.2-p180 :012 > *@photo*
=> #<Photo id: nil, owner_id: "owner_id 2", status: "Uncategorized", note:
"note 2", created_at: nil, updated_at: nil, file_file_name: "rails.png",
file_content_type: "image/png", file_file_size: 79406, file_updated_at:
"2011-07-17 03:51:34", md5sum: "4f9c652dfa2b307ce11efe85afcef98b", width:
300, height: 356>
ruby-1.9.2-p180 :011 > *Photo.all*
=> [#<Photo id: 1, owner_id: "owner_id 1", status: "Uncategorized", note:
"note 1", created_at: "2011-07-17 03:51:33", updated_at: "2011-07-17
03:51:33", file_file_name: "rails.png", file_content_type: "image/png",
file_file_size: 79406, file_updated_at: "2011-07-17 03:43:56", md5sum:
"4f9c652dfa2b307ce11efe85afcef98b", width: 300, height: 356>]
CACHE (0.0ms) SELECT "photos".* FROM "photos"
ruby-1.9.2-p180 :014 > *Photo.find_by_md5sum(@photo.md5sum)*
=> nil
CACHE (0.0ms) SELECT "photos".* FROM "photos" WHERE "photos"."md5sum" =
'4f9c652dfa2b307ce11efe85afcef98b' LIMIT 1
ruby-1.9.2-p180 :015 > *Photo.where(:md5sum =>
"4f9c652dfa2b307ce11efe85afcef98b")*
=> []
CACHE (0.0ms) SELECT "photos".* FROM "photos" WHERE "photos"."md5sum" =
'4f9c652dfa2b307ce11efe85afcef98b'
ruby-1.9.2-p180 :018 >*Photo.where("md5sum = ?",
"4f9c652dfa2b307ce11efe85afcef98b")*
=> []
CACHE (0.0ms) SELECT "photos".* FROM "photos" WHERE (md5sum =
'4f9c652dfa2b307ce11efe85afcef98b')
ruby-1.9.2-p180 :019 > *Photo.where("md5sum like ?",
"4f9c652dfa2b307ce11efe85afcef98b")*
=> [#<Photo id: 1, owner_id: "owner_id 1", status: "Uncategorized", note:
"note 1", created_at: "2011-07-17 03:51:33", updated_at: "2011-07-17
03:51:33", file_file_name: "rails.png", file_content_type: "image/png",
file_file_size: 79406, file_updated_at: "2011-07-17 03:43:56", md5sum:
"4f9c652dfa2b307ce11efe85afcef98b", width: 300, height: 356>]
CACHE (0.0ms) SELECT "photos".* FROM "photos" WHERE (md5sum like
'4f9c652dfa2b307ce11efe85afcef98b')
it's really confusing, does it's do anything with internal cache ?
Ahmy Yulrizka
On Sat, Jul 16, 2011 at 5:47 PM, Colin Law <[email protected]> wrote:
> On 16 July 2011 09:31, Ahmy Yulrizka <[email protected]> wrote:
> > Hi,
> > I have this small problem that made me really frustrating for 3 hours.
> > the code is simple. Im using rails 3.1. it uses paperclip gem to
> > manage attachment. this code works fine on production and development
> either
> > with mri 1.9.2 or ree 1.8.7, the problem is when i test it using cucumber
> > here is the code
> > def create
> > @photo = Photo.new(params[:photo])
> >
> > @photo.md5sum = @photo.file.fingerprint
> > @duplicate = Photo.find_by_md5sum(@photo.md5sum)
> >
> > @test = Photo.all
> >
> > if @duplicate
> > flash[:error] = "Found duplicate entry"
> > else
> > @result = @photo.save
> > end
> > end
> > it just check for the md5sum of the photo, and save if it's not
> duplicate.
> > i test it using cucumber, the problem is with Photo.find_by_md5sum. it
> > return nil. but the @test return all of the record, including the record
> > with the md5sum that should be matched.
>
> Have a look in the log to see what query is being generated for the
> find_by_md5sum and see if anything looks odd.
>
> Also you could use ruby-debug to break in at the find_by_md5sum and
> inspect the data to make sure it looks ok. In the console then use
> find(6) or whatever is the id of the existing duplicate record and
> then inspect it's sum and the sum of the new one you have just made.
> I presume these are all string types?
>
> > i also try to changed it with Photo.where(:md5sum => @photo.md5sum) but
> on
> > 1.9.2 its return to [].
> > but funny, when I change it using like cause, Photo.where("md5sum like
> ?",
> > @photo.md5sum) it return the right object.
>
> Are you sure there is not a space or something at the end of the one
> in the database or in the query so Like finds it but equality does
> not.
>
> > the only problem if i try to use equality in the query. it always returns
> > nil on 1.9.2. when i test it using ree 1.8.2 everything works fine.
> >
> > I have no idea how this happend, maybe some one here face the same
> problem ?
>
> In the rails console play about with the find, putting in the md5sum
> manually for example, to see what happens.
>
> Colin
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.