railsware / capistrano-multiconfig

Capistrano extension that allows to use multiple configurations
MIT License
65 stars 19 forks source link

Fix errors about Capistrano::DSL #13

Closed adamtrilling closed 10 years ago

adamtrilling commented 10 years ago

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.

ayanko commented 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'
adamtrilling commented 10 years ago

You're correct...adding require: false to the Gemfile fixes the problem. The Capistrano docs should mention that...