appengine-tools 0.0.11 → 0.0.12

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/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'date'
5
5
  require 'spec/rake/spectask'
6
6
 
7
7
  GEM = "appengine-tools"
8
- GEM_VERSION = "0.0.11"
8
+ GEM_VERSION = "0.0.12"
9
9
  HOMEPAGE = "http://code.google.com/p/appengine-jruby"
10
10
 
11
11
  spec = Gem::Specification.new do |s|
@@ -19,6 +19,8 @@ require 'appengine-sdk'
19
19
  module AppEngine
20
20
  module Development
21
21
 
22
+ BOOT_APP_RB = File.join(File.dirname(__FILE__), 'boot_app.rb')
23
+
22
24
  class << self
23
25
  def boot_jruby(root=nil, options={})
24
26
  unless defined?(JRUBY_VERSION)
@@ -53,7 +55,7 @@ module AppEngine
53
55
 
54
56
  jars = AppEngine::SDK::RUNTIME_JARS
55
57
 
56
- jruby_args = %w(-rappengine_boot) + args
58
+ jruby_args = ["-r#{BOOT_APP_RB}"] + args
57
59
 
58
60
  ENV['APPLICATION_ROOT'] = root
59
61
  ENV.delete 'GEM_HOME'
@@ -0,0 +1,33 @@
1
+ #! /usr/bin/ruby
2
+ # Copyright:: Copyright 2009 Google Inc.
3
+ # Original Author:: Ryan Brown (mailto:ribrdb@google.com)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ begin
18
+ require 'bundler_gems/environment'
19
+ rescue LoadError
20
+ end
21
+
22
+ begin
23
+ # Install stubs and environment
24
+ require 'appengine-apis/testing'
25
+ AppEngine::Testing.boot
26
+ require 'appengine-apis/urlfetch'
27
+ require 'appengine-apis/tempfile'
28
+ rescue Exception => e
29
+ if ENV['VERBOSE']
30
+ puts e.inspect
31
+ puts e.backtrace
32
+ end
33
+ end
@@ -28,7 +28,7 @@ module AppEngine
28
28
 
29
29
  class Application
30
30
  attr_reader :root
31
-
31
+
32
32
  def initialize(root)
33
33
  @root = root
34
34
  end
@@ -98,24 +98,20 @@ module AppEngine
98
98
  end
99
99
 
100
100
  end
101
-
101
+
102
102
  class AppBundler
103
103
  EXISTING_JRUBY = /^(jruby-abridged|appengine-jruby)-.*jar$/
104
104
  EXISTING_APIS = /^appengine-api.*jar$/
105
- RACKUP = %q{Dir.chdir('..') if Dir.pwd =~ /WEB-INF$/; } +
106
- %q{begin; require 'bundler_gems/environment'; } +
107
- %q{rescue LoadError; end;} +
108
- %q{eval IO.read('config.ru'), nil, 'config.ru', 1}
109
105
 
110
106
  def initialize(root_path)
111
107
  @app = Application.new(root_path)
112
108
  end
113
-
109
+
114
110
  def bundle(args=[])
115
111
  bundle_deps(args)
116
112
  convert_config_ru
117
113
  end
118
-
114
+
119
115
  def bundle_deps(args=[])
120
116
  confirm_appdir
121
117
  create_webinf
@@ -129,11 +125,11 @@ module AppEngine
129
125
  gem_bundler = AppEngine::Admin::GemBundler.new(app.root)
130
126
  gem_bundler.bundle(args)
131
127
  end
132
-
128
+
133
129
  def app
134
130
  @app
135
131
  end
136
-
132
+
137
133
  def confirm_appdir
138
134
  unless File.exists?(app.config_ru) or
139
135
  File.exists?(app.gemfile) or File.exists?(app.webinf)
@@ -152,16 +148,16 @@ module AppEngine
152
148
  Dir.mkdir(app.webinf_lib) unless File.exists?(app.webinf_lib)
153
149
  Dir.mkdir(app.generation_dir) unless File.exists?(app.generation_dir)
154
150
  end
155
-
151
+
156
152
  def create_public
157
153
  return unless defined? JRUBY_VERSION
158
154
  if app.public_root and !File.exists?(app.public_root)
159
- Dir.mkdir(app.public_root)
155
+ Dir.mkdir(app.public_root)
160
156
  end
161
157
  FileUtils.touch(app.favicon_ico) unless File.exists?(app.favicon_ico)
162
158
  FileUtils.touch(app.robots_txt) unless File.exists?(app.robots_txt)
163
159
  end
164
-
160
+
165
161
  def convert_config_ru
166
162
  unless File.exists?(app.config_ru)
167
163
  puts "=> Generating rackup"
@@ -169,32 +165,32 @@ module AppEngine
169
165
  downcase.gsub('_', '-').gsub(/[^-a-z0-9]/, '')
170
166
  stock_rackup = <<EOF
171
167
  require 'appengine-rack'
172
- AppEngine::Rack.configure_app(
173
- :application => "#{app_id}",
168
+ AppEngine::Rack.configure_app(
169
+ :application => "#{app_id}",
174
170
  :precompilation_enabled => true,
175
171
  :version => "1")
176
- run lambda { Rack::Response.new("Hello").finish }
172
+ run lambda { ::Rack::Response.new("Hello").finish }
177
173
  EOF
178
174
  File.open(app.config_ru, 'w') {|f| f.write(stock_rackup) }
179
175
  end
180
176
  generate_xml
181
177
  create_public
182
178
  end
183
-
179
+
184
180
  def copy_jruby
185
181
  require 'appengine-jruby-jars'
186
182
  update_jars("JRuby", EXISTING_JRUBY, [AppEngine::JRubyJars.jruby_jar])
187
183
  end
188
-
184
+
189
185
  def copy_sdk
190
186
  require 'appengine-sdk'
191
187
  glob = "appengine-api-{1.0-sdk,labs}-*.jar"
192
188
  jars = Dir.glob("#{AppEngine::SDK::SDK_ROOT}/lib/user/#{glob}")
193
189
  update_jars('appengine-sdk', EXISTING_APIS, jars)
194
190
  end
195
-
191
+
196
192
  private
197
-
193
+
198
194
  def find_jars(regex)
199
195
  Dir.entries(app.webinf_lib).grep(regex) rescue []
200
196
  end
@@ -240,7 +236,7 @@ EOF
240
236
  yaml = YAML.load_file app.build_status
241
237
  return false unless yaml.is_a? Hash
242
238
  return false unless File.stat(app.config_ru).mtime.eql? yaml[:config_ru]
243
- return false unless File.stat(app.web_xml).mtime.eql? yaml[:web_xml]
239
+ return false unless File.stat(app.web_xml).mtime.eql? yaml[:web_xml]
244
240
  return false unless File.stat(app.aeweb_xml).mtime.eql? yaml[:aeweb_xml]
245
241
  true
246
242
  end
@@ -262,7 +258,7 @@ EOF
262
258
  end
263
259
 
264
260
  # Now configure the basic jruby-rack settings.
265
- add_jruby_rack_defaults(RACKUP)
261
+ add_jruby_rack_defaults
266
262
  end
267
263
  open(app.web_xml, 'w') do |webxml|
268
264
  xml = AppEngine::Rack::XmlFormatter.format(builder.to_xml)
@@ -284,11 +280,11 @@ EOF
284
280
  end
285
281
  end
286
282
  end
287
-
283
+
288
284
  def self.bundle_app(*args)
289
285
  AppBundler.new(args.pop).bundle(args)
290
286
  end
291
-
287
+
292
288
  def self.bundle_deps(*args)
293
289
  AppBundler.new(args.pop).bundle(args)
294
290
  end
@@ -23,7 +23,7 @@ require 'appengine-rack/java'
23
23
 
24
24
  class WebXmlBuilder < Rack::Builder
25
25
  DUMMY_APP = Proc.new{|env|}
26
-
26
+
27
27
  def initialize(&block)
28
28
  @path = "/"
29
29
  @paths = Hash.new {|h, k| h[k] = []}
@@ -31,7 +31,7 @@ class WebXmlBuilder < Rack::Builder
31
31
  @mime_mapping = {}
32
32
  instance_eval(&block) if block_given?
33
33
  end
34
-
34
+
35
35
  def add_mime_mapping(doc)
36
36
  @mime_mapping.each_pair do |key,val|
37
37
  mime = doc.add_element('mime-mapping')
@@ -39,16 +39,15 @@ class WebXmlBuilder < Rack::Builder
39
39
  mime.add_element('mime-type').add_text(val)
40
40
  end
41
41
  end
42
-
43
- def add_jruby_rack_defaults(rackup)
44
- use JavaContextParams, :rackup => rackup
42
+
43
+ def add_jruby_rack_defaults
45
44
  unless @skip_defaults
46
- use JavaServletFilter, 'org.jruby.rack.RackFilter',
45
+ use JavaServletFilter, 'org.jruby.rack.RackFilter',
47
46
  { :name => 'RackFilter', :wildcard => true }
48
47
  end
49
48
  use JavaContextListener, 'com.google.appengine.jruby.LazyContextListener'
50
49
  end
51
-
50
+
52
51
  def use(middleware, *args, &block)
53
52
  if middleware.respond_to? :append_xml
54
53
  @paths[@path] << [middleware, args, block]
@@ -56,7 +55,7 @@ class WebXmlBuilder < Rack::Builder
56
55
  @paths[@path] << [middleware.new(DUMMY_APP, *args, &block)]
57
56
  end
58
57
  end
59
-
58
+
60
59
  def map(path, &block)
61
60
  if URI.parse(path).scheme.nil? # we can only natively support path matching
62
61
  saved_path = @path
@@ -68,7 +67,7 @@ class WebXmlBuilder < Rack::Builder
68
67
  end
69
68
  end
70
69
  end
71
-
70
+
72
71
  def run(app)
73
72
  @paths[@path] << [app, [], nil]
74
73
  end
@@ -89,7 +88,7 @@ class WebXmlBuilder < Rack::Builder
89
88
  add_mime_mapping(doc)
90
89
  doc
91
90
  end
92
-
91
+
93
92
  private
94
93
  def each_path
95
94
  @paths.sort {|a, b| b[0].length - a[0].length}.each do |path, value|
data/spec/rack_spec.rb CHANGED
@@ -22,7 +22,7 @@ describe AppEngine::Rack do
22
22
  it "should generate correct xml" do
23
23
  rackup = IO.read("#{File.dirname(__FILE__)}/config.ru")
24
24
  builder = WebXmlBuilder.new do
25
- add_jruby_rack_defaults('rackup')
25
+ add_jruby_rack_defaults
26
26
  eval rackup, nil, "#{File.dirname(__FILE__)}/config.ru", 1
27
27
  end
28
28
  xml = AppEngine::Rack::XmlFormatter.format(AppEngine::Rack.app.to_xml)
data/spec/web-xml_spec.rb CHANGED
@@ -21,7 +21,7 @@ describe WebXmlBuilder do
21
21
  it "should generate correct xml" do
22
22
  rackup = IO.read("#{File.dirname(__FILE__)}/config.ru")
23
23
  builder = WebXmlBuilder.new do
24
- add_jruby_rack_defaults('rackup')
24
+ add_jruby_rack_defaults
25
25
  eval rackup, nil, "#{File.dirname(__FILE__)}/config.ru", 1
26
26
  end
27
27
  xml = AppEngine::Rack::XmlFormatter.format(builder.to_xml)
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 11
9
- version: 0.0.11
8
+ - 12
9
+ version: 0.0.12
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ryan Brown
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-04-08 00:00:00 -07:00
18
+ date: 2010-05-04 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -102,6 +102,7 @@ files:
102
102
  - Rakefile
103
103
  - lib/appengine-tools/appcfg.rb
104
104
  - lib/appengine-tools/boot.rb
105
+ - lib/appengine-tools/boot_app.rb
105
106
  - lib/appengine-tools/bundler.rb
106
107
  - lib/appengine-tools/dev_appserver.rb
107
108
  - lib/appengine-tools/gem_bundler.rb