rconf 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -24,9 +24,6 @@ rescue LoadError => e
24
24
  require 'rake/rdoctask'
25
25
  end
26
26
 
27
- task :default => 'spec'
28
- task :build => [ 'spec', 'gem' ]
29
-
30
27
  # == Unit Tests == #
31
28
 
32
29
  desc "Run unit tests"
@@ -68,3 +65,6 @@ Rake::RDocTask.new do |rd|
68
65
  rd.rdoc_files.include 'README.rdoc', "lib/**/*.rb"
69
66
  end
70
67
 
68
+ task :default => 'spec'
69
+ task :build => [ 'spec', 'gem' ]
70
+
data/lib/rconf/command.rb CHANGED
@@ -41,7 +41,7 @@ module RightConf
41
41
  if @verbose
42
42
  msg = ([command] + args).compact.join(' ') + ' => ' +
43
43
  res.status.to_s + ': ' + res.output
44
- report(msg)
44
+ report("[rconf] " + msg)
45
45
  end
46
46
  if !res.success? && msg = opts[:abort_on_failure]
47
47
  report_fatal("#{msg}: '#{command} #{args.join(' ')}' returned\n#{res.output}")
@@ -32,11 +32,7 @@ module RightConf
32
32
  # true:: If bundler is already installed
33
33
  # false:: Otherwise
34
34
  def check_linux
35
- report_check("Checking for bundler #{version}")
36
- res = Command.execute('bundle', '--version')
37
- success = (res.output =~ /#{version}/)
38
- report_result(success)
39
- success
35
+ check_bundler && check_bundle
40
36
  end
41
37
  alias :check_darwin :check_linux
42
38
 
@@ -48,19 +44,13 @@ module RightConf
48
44
  raise "Bundler is not supported on Windows!"
49
45
  end
50
46
 
51
- # Install bundler if needed and run bundle install
47
+ # Install bundler if needed and run bundle install.
52
48
  #
53
49
  # === Return
54
50
  # true:: Always return true
55
51
  def run_linux
56
52
  install_bundler
57
- report_check('Installing gems')
58
- options = [ "_#{version}_", 'install' ]
59
- options << "--without=#{exclusions.delete(' ')}" unless exclusions.nil?
60
- options += [ '--path', bundle_path ] unless bundle_path.nil?
61
- options << { :abort_on_failure => 'Failed to install gems' }
62
- res = Command.execute('bundle', *options)
63
- report_success
53
+ install_bundle
64
54
  true
65
55
  end
66
56
  alias :run_darwin :run_linux
@@ -75,6 +65,32 @@ module RightConf
75
65
 
76
66
  protected
77
67
 
68
+ # Check whether bundler is already installed.
69
+ #
70
+ # === Return
71
+ # true:: If bundler is already installed
72
+ # false:: Otherwise
73
+ def check_bundler
74
+ report_check("Checking bundler #{version}")
75
+ res = Command.execute("bundle", "_#{version}_", '--version')
76
+ success = !!(res.output =~ /#{version}/)
77
+ report_result(success)
78
+ success
79
+ end
80
+
81
+ # Check whether the gems in the bundle are all installed.
82
+ #
83
+ # === Return
84
+ # true:: If bundle's gem dependencies are satisfied.
85
+ # false:: Otherwise
86
+ def check_bundle
87
+ report_check("Checking bundle")
88
+ res = Command.execute("bundle", "_#{version}_", 'check')
89
+ success = !!(res.output =~ /dependencies are satisfied/)
90
+ report_result(success)
91
+ success
92
+ end
93
+
78
94
  # Install bundler from gem in cache
79
95
  #
80
96
  # === Return
@@ -93,10 +109,28 @@ module RightConf
93
109
  options = [ 'gem','install' ]
94
110
  options += version_or_file
95
111
  options += [ '--no-ri', '--no-rdoc', { :abort_on_failure => 'Failed to install bundler' } ]
96
- res = Command.execute(*options)
112
+ Command.execute(*options)
97
113
  report_success
98
114
  true
99
115
  end
100
116
 
117
+ # Run "bundle install" to install the gems in the app's bundle.
118
+ #
119
+ # === Return
120
+ # true:: Always return true
121
+ #
122
+ # === Raise
123
+ # (Exception):: If one or gems in the bundle cannot be installed for any reason
124
+ def install_bundle
125
+ report_check('Installing gems')
126
+ options = [ "_#{version}_", 'install' ]
127
+ options << "--without=#{exclusions.delete(' ')}" unless exclusions.nil?
128
+ options += [ '--path', bundle_path ] unless bundle_path.nil?
129
+ options << { :abort_on_failure => 'Failed to install gems' }
130
+ res = Command.execute('bundle', *options)
131
+ report_success
132
+ Command.execute('rbenv', 'rehash') # this is kind of optional
133
+ true
134
+ end
101
135
  end
102
136
  end
@@ -143,14 +143,19 @@ module RightConf
143
143
  Platform.dispatch(ruby) { :install_ruby_prerequisites }
144
144
  c_version = `system_profiler SPDeveloperToolsDataType -xml | xpath "//*[text()='_items']/following-sibling::array/dict/child::key[text()='spdevtools_version']/following-sibling::string/text()" 2> /dev/null`
145
145
  env = {}
146
+
147
+ # Ensure we're using a sane GCC 4.2, not Apple's LLVM-based lookalike.
146
148
  gcc42 = ['/usr/local/bin/gcc-4.2', '/usr/bin/gcc-4.2'].detect { |p| File.executable?(p) }
147
149
  if c_version =~ /^4\.2\.[0-9]+/
148
- if !gcc42
150
+ if gcc42.nil?
149
151
  report_fatal("The C compiler included with Xcode #{c_version} produces buggy ruby interpreters, please install the C compilers from https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg or update your version of Xcode and re-run rconf")
150
152
  else
151
153
  env['CC'] = gcc42
152
154
  end
153
155
  end
156
+
157
+ # Ruby 1.8 force-installs the Tk stdlib extension, no way to opt out.
158
+ # Ensure XQuartz is installed and its headers are on the path.
154
159
  if ruby =~ /1\.8/
155
160
  if File.directory?('/opt/X11/include')
156
161
  env['CC'] = gcc42
@@ -159,6 +164,7 @@ module RightConf
159
164
  report_fatal("Installing ruby 1.8 (or ree 1.8) on Mac OS X requires that XQuartz be installed on the machine first, please go to http://xquartz.macosforge.org/landing/, install XQuartz and try again")
160
165
  end
161
166
  end
167
+
162
168
  Command.execute('rbenv', 'install', ruby, :abort_on_failure => 'Failed to install ruby', :env => env)
163
169
  report_success
164
170
  end
data/lib/rconf/version.rb CHANGED
@@ -13,7 +13,7 @@ module RightConf
13
13
 
14
14
  MAJOR = 1
15
15
  MINOR = 0
16
- BUILD = 6
16
+ BUILD = 7
17
17
 
18
18
  VERSION = [MAJOR, MINOR, BUILD].map(&:to_s).join('.')
19
19
 
@@ -36,7 +36,8 @@ describe RightConf::BundlerConfigurator do
36
36
  end
37
37
 
38
38
  it 'should succeed when bundler succeeds' do
39
- should_execute('bundle', '--version').once.and_return(success_result('0'))
39
+ should_execute('bundle', '_0_', '--version').once.and_return(success_result('0'))
40
+ should_execute('bundle', '_0_', 'check').once.and_return(success_result('dependencies are satisfied'))
40
41
  @configurator.check_linux.should be_true
41
42
  end
42
43
 
@@ -45,6 +46,7 @@ describe RightConf::BundlerConfigurator do
45
46
  {:abort_on_failure=>"Failed to install bundler"}).once.and_return(success_result)
46
47
  should_execute('bundle','_0_', 'install',
47
48
  {:abort_on_failure=>"Failed to install gems"}).once.and_return(success_result)
49
+ should_execute('rbenv', 'rehash').once.and_return(success_result)
48
50
  @configurator.run_linux
49
51
  end
50
52
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rconf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
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-04-02 00:00:00.000000000 Z
12
+ date: 2013-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec