Note that there are some explanatory texts on larger screens.

plurals
  1. POPaperclip not working under Apache/Passenger
    primarykey
    data
    text
    <p>I've deployed my rails application on a staging/production machine running Apache and Phusion Passenger but cannot get the Paperclip gem to load correctly (or at least to get the piece of the application working that uses it). Other gems seem to load fine and when I set <code>config.cache_classes</code> to <code>false</code> in the RAILS_ROOT/config/environments/staging.rb the rest of the application works fine. If it is set to true I get the following Passenger message in the browser (and apache error log) and cannot use the application at all:</p> <pre><code>Error message: undefined method `validates_attachment_presence' for #&lt;Class:0xb618e938&gt; Exception class: NoMethodError </code></pre> <p>I've googled around for quite some time but cannot find a solution for this issue I am having. I hope I am not overlooking something obvious... </p> <p>UPDATE 21/8: On the same box running the rails app with sudo script/server -b 17x.7x.16x.3x -e staging works fine. Could this be a permission problem and Passenger not being able to find the installed Paperclip Gem?</p> <p>Hope you can give me some pointers, let me know if you need more info! Thanks Mark</p> <p>Some information on my environment:</p> <pre><code>$ rails -v Rails 2.3.5 </code></pre> <p>RAILS_ROOT/config/environment.rb has this set:</p> <pre><code>config.gem "paperclip", :version =&gt; "~&gt; 2.3" </code></pre> <p>Gems environment:</p> <pre><code> $ gem env RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [i486-linux] - INSTALLATION DIRECTORY: /var/lib/gems/1.8 - RUBY EXECUTABLE: /usr/bin/ruby1.8 - EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin - RUBYGEMS PLATFORMS: - ruby - x86-linux - GEM PATHS: - /var/lib/gems/1.8 - /home/mark/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources =&gt; true - :verbose =&gt; true - :benchmark =&gt; false - :backtrace =&gt; false - :bulk_threshold =&gt; 1000 - REMOTE SOURCES: - http://gems.rubyforge.org/ </code></pre> <p>Gems list on the server:</p> <pre><code>$ gem list *** LOCAL GEMS *** abstract (1.0.0) actionmailer (3.0.9, 2.3.5) actionpack (3.0.9, 2.3.5) activemodel (3.0.9) activerecord (3.0.9, 2.3.5) activeresource (3.0.9, 2.3.5) activesupport (3.0.9, 2.3.5) arel (2.1.3, 2.0.10) builder (3.0.0, 2.1.2) capistrano (2.6.0) cocaine (0.1.0) daemon_controller (0.2.6) erubis (2.6.6) fastthread (1.0.7) highline (1.6.2) i18n (0.4.2) mail (2.2.19) mime-types (1.16) mysql (2.8.1) net-scp (1.0.4) net-sftp (2.0.5) net-ssh (2.1.4) net-ssh-gateway (1.1.0) paperclip (2.3.12) passenger (3.0.7) polyglot (0.3.1) rack (1.2.3, 1.1.0, 1.0.1) rack-mount (0.6.14) rack-test (0.5.7) rails (2.3.5) rake (0.9.2, 0.8.7) treetop (1.4.9) tzinfo (0.3.29) will_paginate (2.3.15) </code></pre> <p>Paperclip gem is installed here:</p> <pre><code>$ sudo find / -name 'paperclip' /var/lib/gems/1.8/doc/paperclip-2.3.12/rdoc/files/lib/paperclip /var/lib/gems/1.8/doc/paperclip-2.3.12/rdoc/files/lib/generators/paperclip /var/lib/gems/1.8/gems/paperclip-2.3.12/lib/paperclip /var/lib/gems/1.8/gems/paperclip-2.3.12/lib/generators/paperclip /var/lib/gems/1.8/gems/paperclip-2.3.12/generators/paperclip </code></pre> <p>Apache virtualhost config:</p> <pre><code>$ more /etc/apache2/sites-available/staging.mydomain.com &lt;VirtualHost *:80&gt; ServerName staging.mydomain.com DocumentRoot /u/apps/mydomain.com/current/public RailsEnv staging &lt;/VirtualHost&gt; </code></pre> <p>Some additional stack trace from the passenger page (btw: tried removing the will_paginate plugin, but the result is exactly the same; it throws an error at active_record/base.rb):</p> <pre><code>Backtrace: # File Line Location 0 /var/lib/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb 1959 in `method_missing_without_paginate' 1 /u/apps/mydomain.com/releases/20110705192718/vendor/plugins/will_paginate/lib/will_paginate/finder.rb 170 in `method_missing' 2 /u/apps/mydomain.com/releases/20110705192718/app/models/image.rb 5 3 /usr/lib/ruby/1.8/rubygems/custom_require.rb 31 in `gem_original_require' 4 /usr/lib/ruby/1.8/rubygems/custom_require.rb 31 in `require' 5 /var/lib/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb 158 in `require' 6 /var/lib/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb 265 in `require_or_load' 7 /var/lib/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb 224 in `depend_on' 8 /var/lib/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb 136 in `require_dependency' 9 /var/lib/gems/1.8/gems/rails-2.3.5/lib/initializer.rb 414 in `load_application_classes' 10 /var/lib/gems/1.8/gems/rails-2.3.5/lib/initializer.rb 413 in `each' </code></pre> <p>Code for the image class:</p> <pre><code>class Image &lt; ActiveRecord::Base belongs_to :user validate_attachment_presence :photo validates_uniqueness_of :photo_file_name, :scope =&gt; :user_id has_attached_file :photo, :url =&gt; "/assets/:user/app/:class/:style_:basename.: extension", :path =&gt; "#{APP_PATH}/:user/app/:class/:style_:basename.:extension", :styles =&gt; { :thumb=&gt; "50x50#", :large =&gt; "400x" } end </code></pre> <p>config/environment.rb</p> <pre><code># Be sure to restart your server when you modify this file # Specifies gem version of Rails to use when vendor/rails is not present RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') Rails::Initializer.run do |config| config.time_zone = 'UTC' config.active_record.observers = :user_observer #, :website_observer config.gem "paperclip", :version =&gt; "~&gt; 2.3" end SITE_NAME = 'Mydomain.com' CMS_PREFIX = 'joomla' </code></pre> <p>config/environments.rb/staging.rb</p> <pre><code># Settings specified here will take precedence over those in config/environment.rb # The staging environment is meant for finished, apps and final acceptance testing. # Code is not reloaded between requests config.cache_classes = true # Full error reports are disabled and caching is turned on config.action_controller.consider_all_requests_local = false config.action_controller.perform_caching = true config.action_view.cache_template_loading = true ActionController::Base.asset_host = "staging.mydomain.com" DOCUMENT_ROOT = "/var/www" APP_PATH = "/u/apps" DB_PREFIX = "a001" DB_USER = "joomla" DB_PWD = "*****" GIT_URL = "git@github.com:****/mydomain.git" ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { :enable_starttls_auto =&gt; true, :address =&gt; "smtp.gmail.com", :port =&gt; "587", :domain =&gt; "gmail.com", :authentication =&gt; :plain, :user_name =&gt; "****@gmail.com", :password =&gt; "****" } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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