Note that there are some explanatory texts on larger screens.

plurals
  1. POUsing Paperclip with Padrino
    text
    copied!<p>Background: I'm building a simple blog using Padrino, Ruby 1.9.2, HAML, and Heroku. I want the posts index to have a magazine-like look to it. For each post in the index, the user should see titles, content teasers, and images. My problem is with attaching the images.</p> <p>Problem: I've been trying to use the Paperclip gem to attach an image to each post. Heroku will fish the actual image from an Amazon S3 bin. So far, when I try to run a migration, I get the error:</p> <pre><code>$ .../base.rb:1088:in `method_missing': undefined method `has_attached_file' for #&lt;Class:0xa672140&gt; (NoMethodError) </code></pre> <p>It looks like Paperclip just won't load, but there's where I get stuck.</p> <p>Details: --Q: What am I doing when I "try to run a migration"? --A: I put the following into the migrations folder</p> <pre><code>class AddPictureToPost &lt; ActiveRecord::Migration def self.up change_table :posts do |t| t.has_attached_file :picture end end def self.down drop_attached_file :posts, :picture end end </code></pre> <p>then run "padrino rake ar:migrate"</p> <p>--Q: Do I have Paperclip listed in the Gemfile? --A: Yes.</p> <p>--Q: What does the post model look like? --A:</p> <pre><code>class Post &lt; ActiveRecord::Base has_attached_file :picture, :storage =&gt; :s3, :bucket =&gt; 'blog_images', :s3_credentials =&gt; { :access_key_id =&gt; ENV['S3_KEY'], :secret_access_key =&gt; ENV['S3_SECRET'] } end </code></pre> <p>--Q: What does the app.rb look like? --A:</p> <pre><code>class Blog &lt; Padrino::Application register Padrino::Rendering register Padrino::Mailer register Padrino::Helpers enable :sessions get '/' do haml :index end end </code></pre> <p>--Q: What does boot.rb look like? --A:</p> <pre><code>PADRINO_ENV = ENV["PADRINO_ENV"] ||= ENV["RACK_ENV"] ||= "development" unless defined?(PADRINO_ENV) PADRINO_ROOT = File.expand_path('../..', __FILE__) unless defined? (PADRINO_ROOT) require 'rubygems' unless defined?(Gem) require 'bundler/setup' Bundler.require(:default, PADRINO_ENV) Padrino.before_load do end Padrino.after_load do end Padrino.load! </code></pre> <p>--Q: What does the full error output look like? --A:</p> <pre><code>jared:~/blog$ padrino rake ar:migrate =&gt; Executing Rake ar:migrate ... /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/ active_record/base.rb:1088:in `method_missing': undefined method `has_attached_file' for #&lt;Class:0xa1ffb30&gt; (NoMethodError) from /home/jared/isthmus2/app/models/post.rb:2:in `&lt;class:Post&gt;' from /home/jared/isthmus2/app/models/post.rb:1:in `&lt;top (required)&gt;' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `block in require' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:223:in `block in load_dependency' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:640:in `new_constants_in' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:223:in `load_dependency' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/reloader.rb:148:in `safe_load' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:162:in `block in require_dependencies' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:160:in `each' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:160:in `require_dependencies' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/application.rb:34:in `inherited' from /home/jared/blog/app/app.rb:1:in `&lt;top (required)&gt;' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `block in require' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:223:in `block in load_dependency' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:640:in `new_constants_in' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:223:in `load_dependency' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/reloader.rb:148:in `safe_load' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:162:in `block in require_dependencies' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:160:in `each' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:160:in `require_dependencies' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/mounter.rb:148:in `locate_app_object' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/mounter.rb:30:in `initialize' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/mounter.rb:221:in `new' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/mounter.rb:221:in `mount' from /home/jared/blog/config/apps.rb:34:in `&lt;top (required)&gt;' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `block in require' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:223:in `block in load_dependency' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:640:in `new_constants_in' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:223:in `load_dependency' from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/ active_support/dependencies.rb:240:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/reloader.rb:148:in `safe_load' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:162:in `block in require_dependencies' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:160:in `each' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:160:in `require_dependencies' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:70:in `block in load!' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:70:in `each' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/loader.rb:70:in `load!' from /home/jared/blog/config/boot.rb:29:in `&lt;top (required)&gt;' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/cli/base.rb:56:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/cli/base.rb:56:in `block in rake' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/cli/base.rb:140:in `capture' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/ padrino-core/cli/base.rb:56:in `rake' from /usr/local/lib/ruby/gems/1.9.1/gems/thor-0.14.6/lib/thor/task.rb: 22:in `run' from /usr/local/lib/ruby/gems/1.9.1/gems/thor-0.14.6/lib/thor/ invocation.rb:118:in `invoke_task' from /usr/local/lib/ruby/gems/1.9.1/gems/thor-0.14.6/lib/thor.rb: 263:in `dispatch' from /usr/local/lib/ruby/gems/1.9.1/gems/thor-0.14.6/lib/thor/base.rb: 389:in `start' from /usr/local/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/bin/ padrino:9:in `&lt;top (required)&gt;' from /usr/local/bin/padrino:19:in `load' from /usr/local/bin/padrino:19:in `&lt;main&gt;' </code></pre> <p>If you've read this far...THANKS! I hope you can help me shed some light on this. </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload