warbler 1.0.2 → 1.0.3

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/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