Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deploying to Production in Rails 3.2.6 with Twitter-Bootstrap-Rails

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?

like image 482
Lee Richmond Avatar asked Nov 13 '22 01:11

Lee Richmond


1 Answers

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
like image 148
Moriarty Avatar answered Jan 13 '23 11:01

Moriarty