warbler 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ == 1.0.3
2
+
3
+ * Tracking recent Bundler changes - handle locked Gemfiles differently
4
+ than unlocked ones
5
+ * Handle file-based symlinks, and warn about inoperational directory
6
+ symlinks under non-JRuby versions of Ruby.
7
+
1
8
  == 1.0.2
2
9
 
3
10
  * Add 'warble pluginize' task back. This task now just creates a
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ require 'spec/rake/verify_rcov'
18
18
  MANIFEST = FileList["History.txt", "Manifest.txt", "README.txt", "Gemfile",
19
19
  "LICENSE.txt", "Rakefile", "*.erb", "*.rb", "bin/*",
20
20
  "ext/**/*", "lib/**/*", "spec/**/*.rb", "spec/sample/**/*.*"
21
- ].to_a.reject{|f| f=~%r{spec/sample/(MANIFEST|web.xml)}}.sort.uniq
21
+ ].to_a.reject{|f| f=~%r{spec/sample/(MANIFEST|link|web.xml)}}.sort.uniq
22
22
 
23
23
  begin
24
24
  File.open("Manifest.txt", "w") {|f| MANIFEST.each {|n| f << "#{n}\n"} }
data/ext/WarblerWar.java CHANGED
@@ -48,7 +48,9 @@ public class WarblerWar {
48
48
  close(file);
49
49
  }
50
50
  } catch (IOException e) {
51
- e.printStackTrace();
51
+ if (runtime.isDebug()) {
52
+ e.printStackTrace();
53
+ }
52
54
  throw runtime.newIOErrorFromException(e);
53
55
  }
54
56
 
@@ -201,13 +201,26 @@ module Warbler
201
201
  if @bundler && File.exist?("Gemfile")
202
202
  @gems.clear
203
203
  @gem_dependencies = false # Bundler takes care of these
204
- require 'bundler'
205
- env = Bundler.respond_to?(:runtime) ? Bundler.runtime : Bundler.load
206
- def Bundler.env_file; root.join(::Warbler::Runtime::WAR_ENV); end
207
- env.extend Warbler::Runtime
208
- env.gem_path = @gem_path
209
- env.write_war_environment
210
- env.war_specs.each {|spec| @gems << spec }
204
+ begin
205
+ require 'bundler'
206
+ env = Bundler::Runtime.new(Bundler.root, Bundler.definition)
207
+ if bundler_env_file = Bundler.respond_to?(:env_file)
208
+ class << Bundler
209
+ alias orig_env_file env_file
210
+ def env_file; root.join(::Warbler::Runtime::WAR_ENV); end
211
+ end
212
+ end
213
+ env.extend Warbler::Runtime
214
+ env.gem_path = @gem_path
215
+ env.write_war_environment
216
+ env.war_specs.each {|spec| @gems << spec }
217
+ ensure
218
+ if bundler_env_file
219
+ class << Bundler
220
+ alias env_file orig_env_file
221
+ end
222
+ end
223
+ end
211
224
  else
212
225
  @bundler = false
213
226
  end
@@ -24,9 +24,10 @@ module Warbler
24
24
  end
25
25
  end
26
26
 
27
- def rb_lock_file
28
- root.join(WAR_ENV)
29
- end
27
+ # deprecated; compatibility with Bundler <= 0.9.14
28
+ def rb_lock_file #:nocov:
29
+ root.join(WAR_ENV) #:nocov:
30
+ end #:nocov:
30
31
 
31
32
  def specs_for_lock_file
32
33
  super.map {|s| Spec.new(s, gem_path)}
@@ -6,5 +6,5 @@
6
6
  #++
7
7
 
8
8
  module Warbler
9
- VERSION = "1.0.2"
9
+ VERSION = "1.0.3"
10
10
  end
data/lib/warbler/war.rb CHANGED
@@ -137,7 +137,10 @@ module Warbler
137
137
  def add_bundler_files(config)
138
138
  if config.bundler
139
139
  @files[apply_pathmaps(config, 'Gemfile', :application)] = 'Gemfile'
140
- @files[apply_pathmaps(config, '.bundle/environment.rb', :application)] = '.bundle/war-environment.rb'
140
+ if File.exist?('Gemfile.lock')
141
+ @files[apply_pathmaps(config, 'Gemfile.lock', :application)] = 'Gemfile.lock'
142
+ @files[apply_pathmaps(config, '.bundle/environment.rb', :application)] = '.bundle/war-environment.rb'
143
+ end
141
144
  end
142
145
  end
143
146
 
@@ -175,7 +178,11 @@ module Warbler
175
178
  if src.respond_to?(:read)
176
179
  zipfile.get_output_stream(entry) {|f| f << src.read }
177
180
  elsif src.nil? || File.directory?(src)
181
+ warn "directory symlinks are not followed unless using JRuby; #{entry} contents not in archive" \
182
+ if File.symlink?(entry) && !defined?(JRUBY_VERSION)
178
183
  zipfile.mkdir(entry)
184
+ elsif File.symlink?(src)
185
+ zipfile.get_output_stream(entry) {|f| f << File.read(src) }
179
186
  else
180
187
  zipfile.add(entry, src)
181
188
  end
data/lib/warbler_war.jar CHANGED
Binary file
@@ -28,7 +28,8 @@ describe Warbler::Task do
28
28
  Rake::Task["warble:clean"].invoke
29
29
  rm_rf "log"
30
30
  rm_f FileList["config.ru", "*web.xml", "config/web.xml*", "config/warble.rb",
31
- "tmp/gems.jar", "file.txt", 'manifest', 'Gemfile']
31
+ "config/special.txt", "config/link.txt", "tmp/gems.jar",
32
+ "file.txt", 'Gemfile', 'lib/rakelib']
32
33
  Dir.chdir(@pwd)
33
34
  end
34
35
 
@@ -64,6 +65,38 @@ describe Warbler::Task do
64
65
  it "should be able to define all tasks successfully" do
65
66
  Warbler::Task.new "warble", @config
66
67
  end
68
+
69
+ it "should process symlinks by storing a file in the archive that has the same contents as the source" do
70
+ File.open("config/special.txt", "wb") {|f| f << "special"}
71
+ Dir.chdir("config") { ln_s "special.txt", "link.txt" }
72
+ silence { Rake::Task["warble"].invoke }
73
+ Zip::ZipFile.open("#{@config.war_name}.war") do |zf|
74
+ special = zf.get_input_stream('WEB-INF/config/special.txt') {|io| io.read }
75
+ link = zf.get_input_stream('WEB-INF/config/link.txt') {|io| io.read }
76
+ link.should == special
77
+ end
78
+ end
79
+
80
+ it "should process directory symlinks by copying the whole subdirectory" do
81
+ Dir.chdir("lib") { ln_s "tasks", "rakelib" }
82
+ silence { Rake::Task["warble"].invoke }
83
+ Zip::ZipFile.open("#{@config.war_name}.war") do |zf|
84
+ zf.find_entry("WEB-INF/lib/tasks/utils.rake").should_not be_nil
85
+ zf.find_entry("WEB-INF/lib/rakelib/").should_not be_nil
86
+ zf.find_entry("WEB-INF/lib/rakelib/utils.rake").should_not be_nil if defined?(JRUBY_VERSION)
87
+ end
88
+ end
89
+
90
+ it "should use a Bundler Gemfile to include gems" do
91
+ File.open("Gemfile", "w") {|f| f << "gem 'rspec'"}
92
+ @config.bundler = true
93
+ @config.send(:detect_bundler_gems)
94
+ silence { Rake::Task["warble"].invoke }
95
+ Zip::ZipFile.open("#{@config.war_name}.war") do |zf|
96
+ rspec_version = @config.gems.keys.detect {|k| k.name == 'rspec'}.version
97
+ zf.find_entry("WEB-INF/gems/specifications/rspec-#{rspec_version}.gemspec").should_not be_nil
98
+ end
99
+ end
67
100
  end
68
101
 
69
102
  describe "Debug targets" do
@@ -382,6 +382,16 @@ describe Warbler::War do
382
382
  it "should write a Bundler environment file into the war" do
383
383
  File.open("Gemfile", "w") {|f| f << "gem 'rspec'"}
384
384
  @war.apply(Warbler::Config.new)
385
+ file_list(%r{WEB-INF/Gemfile}).should_not be_empty
386
+ file_list(%r{WEB-INF/Gemfile.lock}).should be_empty
387
+ file_list(%r{WEB-INF/\.bundle/environment\.rb}).should be_empty
388
+ end
389
+
390
+ it "should only include Bundler lockfiles if Gemfile.lock exists" do
391
+ File.open("Gemfile", "w") {|f| f << "gem 'rspec'"}
392
+ `ruby -S bundle lock`
393
+ @war.apply(Warbler::Config.new)
394
+ file_list(%r{WEB-INF/Gemfile.lock}).should_not be_empty
385
395
  file_list(%r{WEB-INF/\.bundle/environment\.rb}).should_not be_empty
386
396
  end
387
397
 
metadata CHANGED
@@ -3,90 +3,90 @@ name: warbler
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 1
7
- - 0
8
- - 2
9
- version: 1.0.2
6
+ - 1
7
+ - 0
8
+ - 3
9
+ version: 1.0.3
10
10
  platform: ruby
11
11
  authors:
12
- - Nick Sieger
12
+ - Nick Sieger
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-06 00:00:00 -05:00
17
+ date: 2010-05-11 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rake
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- - 8
30
- - 7
31
- version: 0.8.7
32
- type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: jruby-jars
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 1
43
- - 4
44
- - 0
45
- version: 1.4.0
46
- type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: jruby-rack
50
- prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
- - 9
58
- - 7
59
- version: 0.9.7
60
- type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: rubyzip
64
- prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- segments:
70
- - 0
71
- - 9
72
- - 4
73
- version: 0.9.4
74
- type: :runtime
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
77
- name: rubyforge
78
- prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- segments:
84
- - 2
85
- - 0
86
- - 4
87
- version: 2.0.4
88
- type: :development
89
- version_requirements: *id005
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ segments:
27
+ - 0
28
+ - 8
29
+ - 7
30
+ version: 0.8.7
31
+ prerelease: false
32
+ type: :runtime
33
+ requirement: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: jruby-jars
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 1
42
+ - 4
43
+ - 0
44
+ version: 1.4.0
45
+ prerelease: false
46
+ type: :runtime
47
+ requirement: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: jruby-rack
50
+ version_requirements: &id003 !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ - 9
57
+ - 7
58
+ version: 0.9.7
59
+ prerelease: false
60
+ type: :runtime
61
+ requirement: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: rubyzip
64
+ version_requirements: &id004 !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
70
+ - 9
71
+ - 4
72
+ version: 0.9.4
73
+ prerelease: false
74
+ type: :runtime
75
+ requirement: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: rubyforge
78
+ version_requirements: &id005 !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ segments:
83
+ - 2
84
+ - 0
85
+ - 4
86
+ version: 2.0.4
87
+ prerelease: false
88
+ type: :development
89
+ requirement: *id005
90
90
  description: |-
91
91
  Warbler is a gem to make a .war file out of a Rails, Merb, or Rack-based
92
92
  application. The intent is to provide a minimal, flexible, ruby-like way to
@@ -94,87 +94,87 @@ description: |-
94
94
  server.
95
95
  email: nick@nicksieger.com
96
96
  executables:
97
- - warble
97
+ - warble
98
98
  extensions: []
99
99
 
100
100
  extra_rdoc_files:
101
- - History.txt
102
- - LICENSE.txt
103
- - Manifest.txt
104
- - README.txt
101
+ - History.txt
102
+ - LICENSE.txt
103
+ - Manifest.txt
104
+ - README.txt
105
105
  files:
106
- - Gemfile
107
- - History.txt
108
- - LICENSE.txt
109
- - Manifest.txt
110
- - README.txt
111
- - Rakefile
112
- - bin/warble
113
- - ext/WarblerWar.java
114
- - ext/WarblerWarService.java
115
- - lib/warbler.rb
116
- - lib/warbler/application.rb
117
- - lib/warbler/config.rb
118
- - lib/warbler/gems.rb
119
- - lib/warbler/runtime.rb
120
- - lib/warbler/task.rb
121
- - lib/warbler/version.rb
122
- - lib/warbler/war.rb
123
- - lib/warbler_war.jar
124
- - spec/sample/app/controllers/application.rb
125
- - spec/sample/app/helpers/application_helper.rb
126
- - spec/sample/config/boot.rb
127
- - spec/sample/config/database.yml
128
- - spec/sample/config/environment.rb
129
- - spec/sample/config/environments/development.rb
130
- - spec/sample/config/environments/production.rb
131
- - spec/sample/config/environments/test.rb
132
- - spec/sample/config/initializers/inflections.rb
133
- - spec/sample/config/initializers/mime_types.rb
134
- - spec/sample/config/initializers/new_rails_defaults.rb
135
- - spec/sample/config/routes.rb
136
- - spec/sample/lib/tasks/utils.rake
137
- - spec/sample/public/404.html
138
- - spec/sample/public/422.html
139
- - spec/sample/public/500.html
140
- - spec/sample/public/favicon.ico
141
- - spec/sample/public/index.html
142
- - spec/sample/public/robots.txt
143
- - spec/spec_helper.rb
144
- - spec/warbler/application_spec.rb
145
- - spec/warbler/config_spec.rb
146
- - spec/warbler/gems_spec.rb
147
- - spec/warbler/task_spec.rb
148
- - spec/warbler/war_spec.rb
149
- - warble.rb
150
- - web.xml.erb
106
+ - Gemfile
107
+ - History.txt
108
+ - LICENSE.txt
109
+ - Manifest.txt
110
+ - README.txt
111
+ - Rakefile
112
+ - bin/warble
113
+ - ext/WarblerWar.java
114
+ - ext/WarblerWarService.java
115
+ - lib/warbler.rb
116
+ - lib/warbler/application.rb
117
+ - lib/warbler/config.rb
118
+ - lib/warbler/gems.rb
119
+ - lib/warbler/runtime.rb
120
+ - lib/warbler/task.rb
121
+ - lib/warbler/version.rb
122
+ - lib/warbler/war.rb
123
+ - lib/warbler_war.jar
124
+ - spec/sample/app/controllers/application.rb
125
+ - spec/sample/app/helpers/application_helper.rb
126
+ - spec/sample/config/boot.rb
127
+ - spec/sample/config/database.yml
128
+ - spec/sample/config/environment.rb
129
+ - spec/sample/config/environments/development.rb
130
+ - spec/sample/config/environments/production.rb
131
+ - spec/sample/config/environments/test.rb
132
+ - spec/sample/config/initializers/inflections.rb
133
+ - spec/sample/config/initializers/mime_types.rb
134
+ - spec/sample/config/initializers/new_rails_defaults.rb
135
+ - spec/sample/config/routes.rb
136
+ - spec/sample/lib/tasks/utils.rake
137
+ - spec/sample/public/404.html
138
+ - spec/sample/public/422.html
139
+ - spec/sample/public/500.html
140
+ - spec/sample/public/favicon.ico
141
+ - spec/sample/public/index.html
142
+ - spec/sample/public/robots.txt
143
+ - spec/spec_helper.rb
144
+ - spec/warbler/application_spec.rb
145
+ - spec/warbler/config_spec.rb
146
+ - spec/warbler/gems_spec.rb
147
+ - spec/warbler/task_spec.rb
148
+ - spec/warbler/war_spec.rb
149
+ - warble.rb
150
+ - web.xml.erb
151
151
  has_rdoc: true
152
152
  homepage: http://caldersphere.rubyforge.org/warbler
153
153
  licenses: []
154
154
 
155
155
  post_install_message:
156
156
  rdoc_options:
157
- - --main
158
- - README.txt
159
- - -SHN
160
- - -f
161
- - darkfish
157
+ - --main
158
+ - README.txt
159
+ - -SHN
160
+ - -f
161
+ - darkfish
162
162
  require_paths:
163
- - lib
163
+ - lib
164
164
  required_ruby_version: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- segments:
169
- - 0
170
- version: "0"
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ segments:
169
+ - 0
170
+ version: "0"
171
171
  required_rubygems_version: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- segments:
176
- - 0
177
- version: "0"
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ segments:
176
+ - 0
177
+ version: "0"
178
178
  requirements: []
179
179
 
180
180
  rubyforge_project: caldersphere