Michael Baldock
2010-Oct-29 13:18 UTC
Amazon s3 - paperclip - Rails3 - basic setup Noob simple problems
Hi all, I''ve got a feeling from other posts that this should be very
simple, but believe me I''ve looked around many tutorials / blogs, but
still cant even get the most basic setup working with paperclip and s3.
I am however pretty new to Rails, so could be doing something dumb.
-------
Firstly, to install and use paperclip and aws-s3 I''ve got them both in
by Gemfile:
gem ''paperclip'', :git =>
''git://github.com/thoughtbot/paperclip.git''
gem ''aws-s3'', :require => ''aws/s3''
from directory of rails app I then type "Bundle install" (enter)
I''ve got require ''aws/s3'' in the model and the
controller, and neither
throws up an error.
I''ve registered with aws-s3, and tested that from console
Is this all I need to do to install them both?
-----------
Assuming I''ve got them installed correctly how do I use them...
I keep getting the error message: undefined method `stringify_keys'' for
#<String:0x1035803c8> when I try to save and then view the image.
This goes away when I remove the line :storage => :s3 from the model.
My model looks like this:
---------
class EdTenEvent < ActiveRecord::Base
require ''aws/s3''
has_attached_file :photo,
:styles => { :thumb => "100x100#", :small =>
"150x150>" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/:id/:style.:extension",
:bucket => ''tenevent''
end
---------
When I create a new ''EdTenEvent'' the controller looks like
this:
-----------
def create
@ed_ten_event = EdTenEvent.new(params[:ed_ten_event])
if @ed_ten_event.save
flash[:success] = "new event created"
redirect_to ed_ten_events_path
else
@title = "New Event"
render ''new''
end
end
-----------
and the form for adding new ''EdTenEvents'' looks like this:
-----------
<%= form_for @ed_ten_event , :html => { :multipart => true } do |f|
%>
<%= render ''shared/error_messages'', :object =>
f.object %>
<div class="field">
<%= f.label :photo %>
<%= f.file_field :photo%>
</div>
<div class="actions">
<%= f.submit "Add Event" %>
</div>
<% end %>
Index.html.erb looks like this:
---------
#... make table
<% @ed_ten_events.each do |event| %>
<tr>
<td><%= image_tag event.photo.url(:thumb) %>
#... add more things to table
</table>
---------
I''ve got my s3.yml setup in config
----------
access_key_id:MYKEYHERE
secret_access_key:MySuperSecretKeyHere
bucket:tenevents
-----------
As I said before, I keep getting the error message: undefined method
`stringify_keys'' for #<String:0x1035803c8>
This goes away when I remove the line :storage => :s3 from the model.
Not sure what I''m doing wrong, just trying to do the most basic thing,
store 1 photo!
Any pointers to turorials would be great although I''ve read about 10
and
they all seem to think this should work!
Any help appreciated
Mike B
--
Posted via http://www.ruby-forum.com/.
--
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Walter Lee Davis
2010-Oct-29 15:13 UTC
Re: Amazon s3 - paperclip - Rails3 - basic setup Noob simple problems
On Oct 29, 2010, at 9:18 AM, Michael Baldock wrote:> As I said before, I keep getting the error message: undefined method > `stringify_keys'' for #<String:0x1035803c8> > > This goes away when I remove the line :storage => :s3 from the > model.You might need to load s3 earlier than in the model you''re using it in. Maybe load it in the same time frame that Paperclip does, back in the environment.rb or if that''s different in Rails3, then wherever it gets done there. Maybe try loading it before Paperclip. Walter -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Michael Baldock
2010-Oct-29 23:07 UTC
Re: Amazon s3 - paperclip - Rails3 - basic setup simple problems
Thanks for the help Walter, I tried what you said, putting them in a
different order, still doesn''t quite work, although some progress, got
a
different error message now!:
uninitialized constant AWS::S3::NoSuchBucket
I''ve set up my s3.yml file now to have the 3 buckets production,
development and test.
-------------
development:
bucket: teneventsdevelopment
access_key_id: key1
secret_access_key: key2
test:
bucket: teneventstest
access_key_id: key1
secret_access_key: key2
production:
bucket: tenevents
access_key_id: key1
secret_access_key: key2
-------------
class EdTenEvent < ActiveRecord::Base
has_attached_file :photo,
:styles => { :thumb => "100x100#", :small =>
"150x150>" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => "/:style/:id"
end
-------------
Gemfile etc is as above...
has anyone had the error ''uninitialized constant
AWS::S3::NoSuchBucket''??
anyone got rid of it???
has anyone managed to get a rails3 app working with paperclip and s3?
any help apprecirated.
Mike
--
Posted via http://www.ruby-forum.com/.
--
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Walter Lee Davis
2010-Oct-30 14:12 UTC
Re: Re: Amazon s3 - paperclip - Rails3 - basic setup simple problems
You''ve not indicated any versions for anything here. Are you running Rails.latest? Because you don''t seem to be indicating particular versions of your Gems, so you are by default getting the latest of those... Try finding the exact versions of the Gems that go with your particular Rails (not easy, I know) and set them definitively in your environment/gemfile. Walter On Oct 29, 2010, at 7:07 PM, Michael Baldock wrote:> Thanks for the help Walter, I tried what you said, putting them in a > different order, still doesn''t quite work, although some progress, > got a > different error message now!: > > uninitialized constant AWS::S3::NoSuchBucket > > I''ve set up my s3.yml file now to have the 3 buckets production, > development and test. > > ------------- > > development: > bucket: teneventsdevelopment > access_key_id: key1 > secret_access_key: key2 > > test: > bucket: teneventstest > access_key_id: key1 > secret_access_key: key2 > > production: > bucket: tenevents > access_key_id: key1 > secret_access_key: key2 > > ------------- > > > class EdTenEvent < ActiveRecord::Base > > has_attached_file :photo, > > :styles => { :thumb => "100x100#", :small => "150x150>" }, > :storage => :s3, > :s3_credentials => "#{RAILS_ROOT}/config/s3.yml", > :path => "/:style/:id" > > end > > ------------- > > > Gemfile etc is as above... > > > has anyone had the error ''uninitialized constant > AWS::S3::NoSuchBucket''?? > anyone got rid of it??? > > > has anyone managed to get a rails3 app working with paperclip and s3? > > any help apprecirated. > > Mike > > -- > Posted via http://www.ruby-forum.com/. > > -- > 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 rubyonrails- > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > . > 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Arailsdemo A.
2010-Oct-31 03:36 UTC
Re: Amazon s3 - paperclip - Rails3 - basic setup simple problems
Did you set up your S3 bucket for your app? I wrote up how to do this set up here http://www.arailsdemo.com/posts/15 Hopefully that will get you going. Michael Baldock wrote in post #958147:> Thanks for the help Walter, I tried what you said, putting them in a > different order, still doesn''t quite work, although some progress, got a > different error message now!: > > uninitialized constant AWS::S3::NoSuchBucket >-- Posted via http://www.ruby-forum.com/. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Michael Baldock
2010-Oct-31 11:21 UTC
Re: Amazon s3 - paperclip - Rails3 - basic setup Noob simple problems
Thanks for the help.
@Walter - I''ll have a look through the comments at the git page to see
if I can find anything about specific paperclip versions working with
rails3 / s3, and the same for aws-s3, thanks for the tip!
@ArailsDemo A. - That turoial looks really good, I''ll try and go back
and do the whole thing one day! I have a couple of questions regarding
the paperclip / s3 part.
1. - Your model ''Resources'' has the line
t.references :attachable, :polymorphic => true
is this important for being able to attach photos?
2. I''m inputting my photos in a different way, I have the lines:
<%= f.label :photo %>
<%= f.file_field :photo%>
Whereas you have:
= resource_f.input :attachment, :label => ''File''
I''ve tried substituing your way, and the ''new'' page
returns the error
undefined method `input'' for...
Is this crucial in your setup?
3. I keep coming back to the line
:path => "/:style/:id"
Which in your tutorial is
:path => "/:style/:filename"
Every example seems to have a slightly different line here, what is this
referring to? Is this the structure of me s3 account? is
''style'' the
paperclip reference for ''thumb / small / post'' etc? Where do
you get the
word '':filename'' from??
Thanks again for you help, and a great tutroial.
Mike
--
Posted via http://www.ruby-forum.com/.
--
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Arailsdemo A.
2010-Oct-31 14:34 UTC
Re: Amazon s3 - paperclip - Rails3 - basic setup Noob simple problems
1. The polymorphic part isn''t necessary. If you just expect to have one
model that has file attachments then it''s not going to help you.
However, if you have multiple models that have attachments, then you
might want to go the polymorphic way. See
http://guides.rubyonrails.org/association_basics.html#polymorphic-associations.
2. You''re markup should work. On the website, I''m using HAML
as a
replacement for ERB. Also, I''m using the ''simple
form'' gem. So my markup
is going to look different than yours. Plus, I''m using a nested form.
3. The :path is the file path that file will be placed in your S3
account.
In your case, you specified
:styles => { :thumb => "100x100#", :small =>
"150x150>" }
So when you upload a file, paperclip will generate these two image
styles for you as separate files. If the original file was bigger than
both of these styles, then you''ll also have a third
''original'' file.
If you have
:path => "/:attachment/:id/:style.:extension"
your S3 file path will be something like ''/photo/1/thumb.png''
If you used
:path => "/:style/:id"
your S3 file path would be ''/thumb/1''. This won''t
work because it''s not
specific enough. You''ll just keep overwriting the same file.
'':filename''
is automatically available for you to use because each upload has to
have a filename.
If you''re using Firefox, I recommend the ''S3Fox''
add-on that will allow
you to browse your S3 account through Firefox.
--
Posted via http://www.ruby-forum.com/.
--
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Michael Baldock
2010-Oct-31 19:57 UTC
Re: Amazon s3 - paperclip - Rails3 - basic setup Noob simple problems
Cheers for that, that part makes more sense now. Still getting the same error, now using the path: :path => "/:attachment/:id/:filename.:extension" Another thing I noticed, when I sign in to aws-s3 through the rails console, like this: Base.establish_connection!(:access_key_id... I get the message #<AWS::S3::Connection:0x1035886e0 @http=#<Net::HTTP s3.amazonaws.com:80 open=false>, which doesn''t seem good, however following this I can still access my s3 buckets. Service.buckets returns a complete list. is the ...open=false> message normal?? Thanks -- Posted via http://www.ruby-forum.com/. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Arailsdemo A.
2010-Oct-31 21:04 UTC
Re: Amazon s3 - paperclip - Rails3 - basic setup Noob simple problems
I get that same "...open=false>" in my console when connecting to S3. Can you transfer a file through the console commands? See http://amazon.rubyforge.org/ Also, in the s3.yml file, do you have things in quotes? development: bucket: ''teneventsdevelopment'' access_key_id: ''asdfa324234'' secret_access_key: ''qwer2342'' -- Posted via http://www.ruby-forum.com/. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.