Reputation: 13
I've been working through Hartl's Ruby on Rails Tutorial and haven't come across any problems until yesterday when I tried to deploy to Heroku after adding the CarrierWave gem and setting up ENV variables for AWS.
According to the build log, precompiling assets failed and the push was rejected. Here is the full build log from Heroku:
-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using 1.9.7
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Rubygems 2.0.14 is not threadsafe, so your gems must be installed one at a time. Upgrade to Rubygems 2.1.0 or higher to enable parallel gem installation.
Using rake 10.4.2
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.7.0
Using thread_safe 0.3.5
Using tzinfo 1.2.2
Using activesupport 4.2.2
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile 0.6.2
Using nokogiri 1.6.6.2
Using rails-deprecated_sanitizer 1.0.3
Using rails-dom-testing 1.0.6
Using loofah 2.0.2
Using rails-html-sanitizer 1.0.2
Using actionview 4.2.2
Using rack 1.6.4
Using rack-test 0.6.3
Using actionpack 4.2.2
Using globalid 0.3.5
Using activejob 4.2.2
Using mime-types 2.6.1
Using mail 2.6.3
Using actionmailer 4.2.2
Using activemodel 4.2.2
Using arel 6.0.2
Using activerecord 4.2.2
Using bcrypt 3.1.7
Using sass 3.4.16
Using bootstrap-sass 3.2.0.0
Using will_paginate 3.0.7
Using bootstrap-will_paginate 0.0.10
Installing carrierwave 0.10.0
Using coffee-script-source 1.9.1.1
Using execjs 2.5.2
Using coffee-script 2.4.1
Using thor 0.19.1
Using railties 4.2.2
Using coffee-rails 4.1.0
Installing excon 0.45.4
Using faker 1.4.2
Installing formatador 0.2.5
Installing net-ssh 2.9.2
Installing net-scp 1.2.1
Installing fog-core 1.32.0
Using multi_json 1.11.2
Installing fog-json 1.0.2
Installing inflecto 0.0.2
Installing fog-brightbox 0.8.0
Installing fog-softlayer 0.4.7
Installing ipaddress 0.8.0
Installing fog 1.23.0
Using jbuilder 2.2.3
Using jquery-rails 4.0.3
Installing subexec 0.2.3
Installing mini_magick 3.8.0
Using pg 0.17.1
Using puma 2.11.1
Using bundler 1.9.7
Using sprockets 3.2.0
Using sprockets-rails 2.3.2
Using rails 4.2.2
Using rails_serve_static_assets 0.0.4
Using rails_stdout_logging 0.0.3
Using rails_12factor 0.0.2
Using rdoc 4.2.0
Using tilt 1.4.1
Using sass-rails 5.0.2
Using sdoc 0.4.0
Using turbolinks 2.3.0
Using uglifier 2.5.3
Bundle complete! 26 Gemfile dependencies, 71 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into ./vendor/bundle.
Bundle completed (26.47s)
Cleaning up the bundler cache.
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
NoMethodError: undefined method `config' for CarrierWave:Module
/tmp/build_1961905c6733bb602170a23f33bb3199/config/initializers/carrier_wave.rb:2:in `<top (required)>'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `block in load'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/engine.rb:652:in `block in load_config_initializer'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.2/lib/active_support/notifications.rb:166:in `instrument'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/engine.rb:651:in `load_config_initializer'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/engine.rb:616:in `block (2 levels) in <class:Engine>'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/engine.rb:615:in `each'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/engine.rb:615:in `block in <class:Engine>'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/initializable.rb:30:in `instance_exec'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/initializable.rb:30:in `run'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/initializable.rb:55:in `block in run_initializers'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/initializable.rb:44:in `each'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/initializable.rb:44:in `tsort_each_child'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/initializable.rb:54:in `run_initializers'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/application.rb:352:in `initialize!'
/tmp/build_1961905c6733bb602170a23f33bb3199/config/environment.rb:5:in `<top (required)>'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/application.rb:328:in `require'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/application.rb:328:in `require_environment!'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/railties-4.2.2/lib/rails/application.rb:457:in `block in run_tasks_blocks'
/tmp/build_1961905c6733bb602170a23f33bb3199/vendor/bundle/ruby/2.0.0/gems/sprockets-rails-2.3.2/lib/sprockets/rails/task.rb:64:in `block (2 levels) in define'
Tasks: TOP => environment
(See full trace by running task with --trace)
!
! Precompiling assets failed.
!
! Push rejected, failed to compile Ruby app
My initializers/carrier_wave.rb file looks like this:
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
I ran rake assets:precompile locally and everything seemed to work fine. The app runs as expected locally as well.
ENV vars were set using
heroku config:set S3_SECRET_KEY=xxxxxxxxxx
Dido for other ENV vars.
For the record, my gemfile is set up as follows:
source 'https://rubygems.org'
gem 'rails', '4.2.2'
gem 'bcrypt', '3.1.7'
gem 'faker', '1.4.2'
gem 'carrierwave', '0.10.0'
gem 'mini_magick', '3.8.0'
gem 'fog', '1.23.0'
gem 'will_paginate', '3.0.7'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap-sass', '3.2.0.0'
gem 'sass-rails', '5.0.2'
gem 'uglifier', '2.5.3'
gem 'coffee-rails', '4.1.0'
gem 'jquery-rails', '4.0.3'
gem 'turbolinks', '2.3.0'
gem 'jbuilder', '2.2.3'
gem 'sdoc', '0.4.0', group: :doc
group :development, :test do
gem 'sqlite3', '1.3.9'
gem 'byebug', '3.4.0'
gem 'web-console', '2.0.0.beta3'
gem 'spring', '1.1.3'
end
group :test do
gem 'minitest-reporters', '1.0.5'
gem 'mini_backtrace', '0.1.3'
gem 'guard-minitest', '2.3.1'
end
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
gem 'puma', '2.11.1'
end
I would really appreciate any insight and help with anything I may be missing. Thank you.
Upvotes: 1
Views: 107
Reputation: 28
I came across the same issue. Found a solution at Configure Carrierwave for Amazon S3 Storage and Heroku
In the carrierwave.rb
file, change the
config.fog_directory = ENV['S3_BUCKET']
to
config.fog_directory = ENV['S3_BUCKET_NAME']
Upvotes: 1