diff --git a/lib/capistrano/rails/console/tasks/remote.cap b/lib/capistrano/rails/console/tasks/remote.cap index 2a4ffa8..0876e2f 100644 --- a/lib/capistrano/rails/console/tasks/remote.cap +++ b/lib/capistrano/rails/console/tasks/remote.cap @@ -1,34 +1,13 @@ -def rvm_loaded? - Gem::Specification::find_all_by_name('capistrano-rvm').any? -end - -def rbenv_loaded? - Gem::Specification::find_all_by_name('capistrano-rbenv').any? -end - -def bundler_loaded? - Gem::Specification::find_all_by_name('capistrano-bundler').any? -end - namespace :rails do - desc 'Access a remote rails console' + desc "Interact with a remote rails console" task console: ['deploy:set_rails_env'] do - app_server = roles(:app).first - - # RVM support - if rvm_loaded? - Rake::Task['rvm:hook'].invoke - set :rvm_map_bins, ((fetch(:rvm_map_bins) || []) + ['rails']) + on primary :app do |host| + ssh_cmd = "ssh #{host.netssh_options[:user]}@#{host.hostname} -p #{host.port || 22}" + cmd = SSHKit::Command.new(:rails, "console #{fetch :rails_env}") + SSHKit.config.output << cmd + exec %Q(#{ssh_cmd} -t "cd #{current_path} && (#{cmd.environment_string} #{cmd})") end - - command = [] - command << "#{fetch(:rvm_path)}/bin/rvm #{fetch(:rvm_ruby_version)} do" if rvm_loaded? - command << "#{ fetch :rbenv_prefix } " if rbenv_loaded? - command << "bundle exec" if bundler_loaded? - command << "rails console #{fetch(:rails_env)}" - - exec %Q(ssh #{app_server.netssh_options[:user]}@#{app_server.hostname} -p #{app_server.port || 22} -t "cd #{current_path} && #{command.join(' ')}") end end diff --git a/lib/capistrano/rails/console/version.rb b/lib/capistrano/rails/console/version.rb index 497f762..f702987 100644 --- a/lib/capistrano/rails/console/version.rb +++ b/lib/capistrano/rails/console/version.rb @@ -5,7 +5,7 @@ module Rails # Console module Console # gem version - VERSION = '0.2.0' + VERSION = '0.3.0' end end end