Closed adamtrilling closed 10 years ago
1) Actually we do require capistrano/dsl
on https://github.com/railsware/capistrano-multiconfig/blob/master/lib/capistrano/multiconfig.rb#L1
2) Capistrano should not be part of your app code (it's actually separate tool). So you should not require it in Gemfile:
gem 'capistrano', require: false
gem 'capistrano-multiconfig', require: false
3) Use capistrano-*
only in Capfile
# Load DSL and Setup multiple configurations
# https://github.com/railsware/capistrano-multiconfig
require 'capistrano/multiconfig'
# Includes default deployment tasks
require 'capistrano/deploy'
# Includes tasks from other gems included in your Gemfile
#require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano/puma'
require 'capistrano/sidekiq'
require 'whenever/capistrano'
You're correct...adding require: false to the Gemfile fixes the problem. The Capistrano docs should mention that...
Capistrano doesn't load itself by default when you call Bundler.require...you need to require 'capistrano/all' in order to load it. When capistrano-multiconfig is included in a Rails project, running any rake task results in the following error:
NameError: uninitialized constant Capistrano::DSL /Users/adam/code/project/vendor/bundle/ruby/2.1.0/gems/capistrano-multiconfig-3.0.8/lib/capistrano/multiconfig.rb:4:in `<top (required)>'
This patch fixes the error.