hey folks I'm having a bit of an issue trying to deploy my rails 3.2.6 app to production, deploy seems to go fine right up until it gets to precompiling assets here is the error I'm getting:
command finished in 1740ms
* executing "cd /home/deployer/apps/stealthygecko/releases/20120717222341 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
servers: ["xx.xxx.xxx.xxx"]
[xx.xxx.xxx.xxx] executing command
** [out :: xx.xxx.xxx.xxx] rake aborted!
** [out :: xx.xxx.xxx.xxx] no such file to load -- addressable/uri
** [out :: xx.xxx.xxx.xxx]
** [out :: xx.xxx.xxx.xxx] (See full trace by running task with --trace)
command finished in 3131ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/deployer/apps/stealthygecko/releases/20120717222341; true"
servers: ["xx.xxx.xxx.xxx"]
[xx.xxx.xxx.xxx] executing command
command finished in 786ms
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-1.9.2@stealthygecko_rewrite' -c 'cd /home/deployer/apps/stealthygecko/releases/20120717222341 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'"
I've tried setting "config.assets.compile = false" to see if this helps but I still get the same error.
here is my deploy script:
server "xx.xxx.xxx.xxx", :web, :app, :db, primary: true
depend :remote, :gem, "bundler", ">=1.1.3"
depend :remote, :gem, "rake", ">=0.9.2.2"
set :application, "stealthygecko"
set :user, :"deployer"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
set :scm, :git
set :repository, "[email protected]:StealthyGecko/stealthygecko.git"
set :branch, "master"
default_run_options[:pty] = true
set :ssh_options, {:forward_agent => true}
set :ruby_version, "ruby-1.9.2"
set :gemset_name, "stealthygecko_rewrite"
set :rvm_ruby_gemset, "#{ruby_version}@#{gemset_name}"
set :bundle_without, [:darwin, :development, :test]
require "rvm/capistrano"
load 'deploy/assets'
set :rvm_ruby_string, "#{rvm_ruby_gemset}" # Select the gemset
set :rvm_type, :user # RVM install is in the deploying user's home directory
#
before "deploy:assets:precompile", "bundle:install"
after "deploy", "deploy:cleanup" # keep only the last 5 releases
namespace :deploy do
%w[start stop restart].each do |command|
desc "#{command} unicorn server"
task command, roles: :app, except: {no_release: true} do
run "cd #{deploy_to}/current && /etc/init.d/unicorn_stealthygecko restart"
end
end
task :setup_config, roles: :app do
puts "Symlinking nginx and unicorn configs"
sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"
sudo "ln -nfs #{current_path}/config/unicorn_init.sh /etc/init.d/unicorn_#{application}"
run "mkdir -p #{shared_path}/config"
put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml"
puts "Now edit the config files in #{shared_path}."
end
after "deploy:setup", "deploy:setup_config"
task :symlink_config, roles: :app do
puts "Symlinking database yml"
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
puts "Database Symlink done!"
end
after "deploy:finalize_update", "deploy:symlink_config"
desc "Make sure local git is in sync with remote."
task :check_revision, roles: :web do
unless `git rev-parse HEAD` == `git rev-parse origin/master`
puts "WARNING: HEAD is not the same as origin/master"
puts "Run `git push` to sync changes."
exit
end
end
before "deploy", "deploy:check_revision"
end
Apologies if its a bit of a mess its cobbled together from various Tutorials I read up on. And here is my Gemfile:
source 'http://rubygems.org'
gem 'rake'
gem 'rails', '3.2.6'
gem 'mysql2'
gem 'bcrypt-ruby', '~> 3.0.0'
gem 'gravtastic'
gem "friendly_id"
gem "rinku", '~>1.2.2', :require => 'rails_rinku'
gem "videawesome"
gem "will_paginate", "~>3.0.3"
gem "tweet-button"
gem "bitly"
gem "sanitize"
gem "newrelic_rpm"
gem 'capistrano'
gem 'rvm-capistrano'
gem "unicorn", "~> 4.2.1"
gem "twitter", "2.2.2"
gem 'instagram', :git => 'git://github.com/StealthyGecko/instagram-ruby-gem-lee.git'
group :assets do
gem 'coffee-script'
gem 'jquery-rails'
gem 'uglifier'
gem 'therubyracer'
gem 'execjs'
gem 'twitter-bootstrap-rails'
end
gem 'rspec-rails', :group => [:test, :development]
group :test do
gem 'sqlite3'
gem 'guard-rspec'
gem 'capybara'
gem 'launchy'
gem 'shoulda', '3.0.0.beta2'
gem 'factory_girl_rails'
gem 'ruby-debug19', :require => 'ruby-debug'
gem 'turn', :require => false
end
I know its a bit of a long shot but if anyone can spot where I'm going wrong or if anyone has come up against this problem and managed to solve it please let me know as I've been banging my head against this problem for a few hours now.
when it fails its seems to say "no such file to load -- addressable/uri" however I'm not sure where this is being used and why its being used for compiling assets
any suggestions?
Apparently fixed following: http://www.kudelabs.com/2012/03/28/rails-3-2-cap-deploy-with-assets
UPDATE2: After looking at your cap script you have before "deploy:assets:precompile", "bundle:install"
Try removing that and adding: require 'bundler/capistrano'
Remove load 'deploy/assets'
and puts that in your Capfile.
UPDATE: After looking at rails generate rspec:install returns 'Could not find addressable-2.2.8 in any of the sources' and http://addressable.rubyforge.org/api/.
Check your Gemfile.lock
Using addressable (X.X.X)
That should probably be a dependencies to one of the gems in your Gemfile. Otherwise you can try and add it manually.
I have...
...
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
gem 'twitter-bootstrap-rails'
end
...
and in my Gemfile.lock
...
addressable (2.2.8)
...
$ cat Capfile
You need to uncomment load 'deploy/assets'
load 'deploy'
# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'
Dir['vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
load 'config/deploy' # remove this line to skip loading any of the default tasks
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With