capistrano / rvm

MIT License
140 stars 47 forks source link

Using SSHKit prefixes to hook RVM #22

Closed kirs closed 10 years ago

kirs commented 10 years ago

Here is the first implementation using SSHKit prefixes: https://github.com/leehambley/sshkit/pull/45

Kriechi commented 10 years ago

Bundler bin is not mapped any more. How do we address this issue - in combination with command map?

I think it is not a good idea to specify an addition rvm-map-bin entry inside capistrano-bundler... So we need a sane default here in capistrano-{rvm,rbenv}

kirs commented 10 years ago

Bundler bin is not mapped any more. How do we address this issue - in combination with command map?

Now it's done inside bundler: https://github.com/capistrano/bundler/pull/16/files#diff-91990b1845e3608397d87393341f0544R31

If you mean that someone is using execute :bundle, "exec some_task", there are 2 ways:

1) Declare this way as not recommended and tell developers to add some_task to bundle_bins instead. 2) Keep mapping bundle to avoid regressions

Kriechi commented 10 years ago

Hmm - I mean, if I try execute(:bundle, 'install') - will RVM be invoked? Because :bundle is not in rvm-map-bin...

Yes, if someone wants to bundle exec something, they have to add it to bundle-bins. Thats fine.

kirs commented 10 years ago

You're right, I've fixed it.

kirs commented 10 years ago

@Kriechi it works for me on capistrano 3.1 from upstream, SSHKit 1.2.0 and capistrano-rvm from this branch.

I would appreciate if you try it too :wink:

Kriechi commented 10 years ago

:+1: It works! Good to merge!

kirs commented 10 years ago

Awesome. Your tried the whole rails/bundler/rvm workflow, right?

Kriechi commented 10 years ago
  gem 'capistrano', github: 'capistrano/capistrano'
  gem 'capistrano-rvm',     github: 'capistrano/rvm', branch: 'sshkit-prefixes'
  gem 'capistrano-bundler', github: 'capistrano/bundler', branch: 'sshkit-prefixes'
  gem 'capistrano-rails',   github: 'capistrano/rails'

and

require 'capistrano/setup'
require 'capistrano/deploy'

require 'capistrano/rvm'
require 'capistrano/rails'

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

deploy.rb and stage-files basically just like the templates.