capistrano-rbenv 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +3 -0
- data/lib/capistrano-rbenv.rb +71 -26
- data/lib/capistrano-rbenv/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -40,6 +40,8 @@ Following options are available to manage your rbenv.
|
|
40
40
|
* `:rbenv_use_configure` - configure rbenv in your shell config or not. `true` by default. users who are using Chef/Puppet may prefer setting this value `false`.
|
41
41
|
* `:rbenv_configure_files` - list of shell configuration files to be configured for rbenv. by default, guessing from user's `$SHELL` and `$HOME`.
|
42
42
|
* `:rbenv_configure_basenames` - advanced option for `:rbenv_configure_files`. list of filename of your shell configuration files if you don't like the default value of `:rbenv_configure_files`.
|
43
|
+
* `:rbenv_install_dependencies` - controls whether installing dependencies or not. `true` by default.
|
44
|
+
* `:rbenv_define_default_environment` - define `RBENV_ROOT` and update `PATH` to use rbenv over capistrano. `true` by default.
|
43
45
|
|
44
46
|
## Contributing
|
45
47
|
|
@@ -53,6 +55,7 @@ Following options are available to manage your rbenv.
|
|
53
55
|
|
54
56
|
- YAMASHITA Yuu (https://github.com/yyuu)
|
55
57
|
- Geisha Tokyo Entertainment Inc. (http://www.geishatokyo.com/)
|
58
|
+
- Nico Schottelius (http://www.nico.schottelius.org/)
|
56
59
|
|
57
60
|
## License
|
58
61
|
|
data/lib/capistrano-rbenv.rb
CHANGED
@@ -7,13 +7,17 @@ module Capistrano
|
|
7
7
|
def self.extended(configuration)
|
8
8
|
configuration.load {
|
9
9
|
namespace(:rbenv) {
|
10
|
+
_cset(:rbenv_root, "$HOME/.rbenv")
|
10
11
|
_cset(:rbenv_path) {
|
11
|
-
|
12
|
+
# expand to actual path to use this value since rbenv may be executed by users other than `:user`.
|
13
|
+
capture("echo #{rbenv_root.dump}").strip
|
12
14
|
}
|
15
|
+
_cset(:rbenv_bin_path) { File.join(rbenv_path, "bin") }
|
16
|
+
_cset(:rbenv_shims_path) { File.join(rbenv_path, "shims") }
|
13
17
|
_cset(:rbenv_bin) {
|
14
|
-
File.join(
|
18
|
+
File.join(rbenv_bin_path, "rbenv")
|
15
19
|
}
|
16
|
-
_cset(:rbenv_cmd) {
|
20
|
+
_cset(:rbenv_cmd) {
|
17
21
|
"env RBENV_VERSION=#{rbenv_ruby_version.dump} #{rbenv_bin}"
|
18
22
|
}
|
19
23
|
_cset(:rbenv_repository, 'git://github.com/sstephenson/rbenv.git')
|
@@ -33,9 +37,11 @@ module Capistrano
|
|
33
37
|
rbenv_use_bundler ? "#{rbenv_cmd} exec bundle" : 'bundle'
|
34
38
|
}
|
35
39
|
|
40
|
+
_cset(:rbenv_install_dependencies, true)
|
41
|
+
|
36
42
|
desc("Setup rbenv.")
|
37
43
|
task(:setup, :except => { :no_release => true }) {
|
38
|
-
dependencies
|
44
|
+
dependencies if rbenv_install_dependencies
|
39
45
|
update
|
40
46
|
configure
|
41
47
|
build
|
@@ -80,9 +86,29 @@ module Capistrano
|
|
80
86
|
plugins.update
|
81
87
|
}
|
82
88
|
|
89
|
+
def setup_default_environment
|
90
|
+
env = fetch(:default_environment, {}).dup
|
91
|
+
env["RBENV_ROOT"] = rbenv_path
|
92
|
+
env["PATH"] = [ rbenv_shims_path, rbenv_bin_path, env.fetch("PATH", "$PATH") ].join(":")
|
93
|
+
set(:default_environment, env)
|
94
|
+
end
|
95
|
+
|
96
|
+
_cset(:rbenv_define_default_environment, true)
|
97
|
+
# workaround for `multistage` of capistrano-ext.
|
98
|
+
# https://github.com/yyuu/capistrano-rbenv/pull/5
|
99
|
+
if top.namespaces.key?(:multistage)
|
100
|
+
after "multistage:ensure" do
|
101
|
+
setup_default_environment if rbenv_define_default_environment
|
102
|
+
end
|
103
|
+
else
|
104
|
+
on :start do
|
105
|
+
setup_default_environment if rbenv_define_default_environment
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
83
109
|
desc("Purge rbenv.")
|
84
110
|
task(:purge, :except => { :no_release => true }) {
|
85
|
-
run("rm -rf #{rbenv_path}")
|
111
|
+
run("rm -rf #{rbenv_path.dump}")
|
86
112
|
}
|
87
113
|
|
88
114
|
namespace(:plugins) {
|
@@ -120,35 +146,49 @@ module Capistrano
|
|
120
146
|
_cset(:rbenv_configure_script) {
|
121
147
|
(<<-EOS).gsub(/^\s*/, '')
|
122
148
|
# Configured by capistrano-rbenv. Do not edit directly.
|
123
|
-
export PATH
|
149
|
+
export PATH=#{[ rbenv_bin_path, "$PATH"].join(":").dump}
|
124
150
|
eval "$(rbenv init -)"
|
125
151
|
EOS
|
126
152
|
}
|
153
|
+
|
154
|
+
def _update_config(script_file, file, tempfile)
|
155
|
+
execute = []
|
156
|
+
## (1) ensure copy source file exists
|
157
|
+
execute << "( test -f #{file.dump} || touch #{file.dump} )"
|
158
|
+
## (2) copy originao config to temporary file
|
159
|
+
execute << "rm -f #{tempfile.dump}" # remove tempfile to preserve permissions of original file
|
160
|
+
execute << "cp -fp #{file.dump} #{tempfile.dump}"
|
161
|
+
## (3) modify temporary file
|
162
|
+
execute << "sed -i -e '/^#{Regexp.escape(rbenv_configure_signature)}/,/^#{Regexp.escape(rbenv_configure_signature)}/d' #{tempfile.dump}"
|
163
|
+
execute << "echo #{rbenv_configure_signature.dump} >> #{tempfile.dump}"
|
164
|
+
execute << "cat #{script_file.dump} >> #{tempfile.dump}"
|
165
|
+
execute << "echo #{rbenv_configure_signature.dump} >> #{tempfile.dump}"
|
166
|
+
## (4) update config only if it is needed
|
167
|
+
execute << "cp -fp #{file.dump} #{(file + ".orig").dump}"
|
168
|
+
execute << "( diff -u #{file.dump} #{tempfile.dump} || mv -f #{tempfile.dump} #{file.dump} )"
|
169
|
+
run(execute.join(" && "))
|
170
|
+
end
|
171
|
+
|
172
|
+
def update_config(script_file, file)
|
173
|
+
begin
|
174
|
+
tempfile = capture("mktemp /tmp/rbenv.XXXXXXXXXX").strip
|
175
|
+
_update_config(script_file, file, tempfile)
|
176
|
+
ensure
|
177
|
+
run("rm -f #{tempfile.dump}") rescue nil
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
127
181
|
_cset(:rbenv_configure_signature, '##rbenv:configure')
|
128
182
|
task(:configure, :except => { :no_release => true }) {
|
129
183
|
if fetch(:rbenv_use_configure, true)
|
130
|
-
script = File.join('/tmp', "rbenv.#{$$}")
|
131
|
-
config = [ rbenv_configure_files ].flatten
|
132
|
-
config_map = Hash[ config.map { |f| [f, File.join('/tmp', "#{File.basename(f)}.#{$$}")] } ]
|
133
184
|
begin
|
134
|
-
|
135
|
-
put(rbenv_configure_script,
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
execute << "cp -fp #{file} #{temp}"
|
140
|
-
execute << "sed -i -e '/^#{Regexp.escape(rbenv_configure_signature)}/,/^#{Regexp.escape(rbenv_configure_signature)}/d' #{temp}"
|
141
|
-
execute << "echo #{rbenv_configure_signature.dump} >> #{temp}"
|
142
|
-
execute << "cat #{script} >> #{temp}"
|
143
|
-
execute << "echo #{rbenv_configure_signature.dump} >> #{temp}"
|
144
|
-
## (2) update config only if it is needed
|
145
|
-
execute << "cp -fp #{file} #{file}.orig"
|
146
|
-
execute << "( diff -u #{file} #{temp} || mv -f #{temp} #{file} )"
|
147
|
-
}
|
148
|
-
run(execute.join(' && '))
|
185
|
+
script_file = capture("mktemp /tmp/rbenv.XXXXXXXXXX").strip
|
186
|
+
top.put(rbenv_configure_script, script_file)
|
187
|
+
[ rbenv_configure_files ].flatten.each do |file|
|
188
|
+
update_config(script_file, file)
|
189
|
+
end
|
149
190
|
ensure
|
150
|
-
|
151
|
-
run("rm -f #{remove.join(' ')}") rescue nil
|
191
|
+
run("rm -f #{script_file.dump}") rescue nil
|
152
192
|
end
|
153
193
|
end
|
154
194
|
}
|
@@ -223,6 +263,11 @@ module Capistrano
|
|
223
263
|
run("unset -v GEM_HOME; #{gem} query #{q} 2>/dev/null | #{f} || #{gem} install -q #{i}")
|
224
264
|
run("#{rbenv_cmd} rehash && #{bundle_cmd} version")
|
225
265
|
}
|
266
|
+
|
267
|
+
# call `rbenv rehash` to update shims.
|
268
|
+
def rehash()
|
269
|
+
run("#{rbenv_cmd} rehash")
|
270
|
+
end
|
226
271
|
}
|
227
272
|
}
|
228
273
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-rbenv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|