appengine-apis 0.0.5 → 0.0.6

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
@@ -1,4 +1,4 @@
1
- %w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
1
+ %w[rubygems rake rake/clean fileutils newgem rubigen hoe].each { |f| require f }
2
2
  require File.dirname(__FILE__) + '/lib/appengine-apis'
3
3
 
4
4
  # set up pretty rdoc if possible
@@ -21,6 +21,7 @@ $hoe = Hoe.new('appengine-apis', AppEngine::VERSION) do |p|
21
21
  p.extra_dev_deps = [
22
22
  ['newgem', ">= #{::Newgem::VERSION}"]
23
23
  ]
24
+ p.readme_file = 'README.rdoc'
24
25
 
25
26
  p.clean_globs |= %w[**/.DS_Store tmp *.log]
26
27
  path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
@@ -19,5 +19,5 @@ $:.unshift(File.dirname(__FILE__)) unless
19
19
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
20
20
 
21
21
  module AppEngine
22
- VERSION = '0.0.5'
22
+ VERSION = '0.0.6'
23
23
  end
@@ -18,6 +18,7 @@
18
18
  #
19
19
  # Helpers for installing stub apis in unit tests.
20
20
 
21
+ puts 'local boot: ' + caller(0).inspect
21
22
  require 'appengine-apis/testing'
22
23
  AppEngine::Testing.boot
23
24
 
@@ -16,101 +16,5 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'java'
20
-
21
- module AppEngine
22
-
23
- DEV_APPSERVER = 'com.google.appengine.tools.development.DevAppServerMain'
24
-
25
- # Helper methods to locate the App Engine SDK and add it to the class path.
26
- module SDK
27
- class << self
28
-
29
- # Tries to load the Kickstart class.
30
- def load_kickstart
31
- tools = %w{lib appengine-tools-api.jar}
32
- cp = java.lang.System.get_property('java.class.path')
33
- jar = sdk_path(*tools)
34
- sep = java.io.File::pathSeparator
35
- java.lang.System.set_property('java.class.path', "#{jar}#{sep}#{cp}")
36
- with_jars(tools) do
37
- return Java.ComGoogleAppengineTools.KickStart
38
- end
39
- end
40
-
41
- # Tries to load the ApiProxy class.
42
- def load_apiproxy
43
- with_jars(%w{lib impl appengine-api.jar}) do
44
- return Java.ComGoogleApphostingApi.ApiProxy
45
- end
46
- end
47
-
48
- # Tries to load the ApiProxyLocalFactory class.
49
- def load_local_apiproxy_factory
50
- with_jars(%w{lib shared appengine-local-runtime-shared.jar},
51
- %w{lib impl appengine-api-stubs.jar},
52
- %w{lib impl appengine-local-runtime.jar}
53
- ) do
54
- return Java.ComGoogleAppengineToolsDevelopment.ApiProxyLocalFactory
55
- end
56
- end
57
-
58
- def load_appcfg
59
- with_jars(%w{lib appengine-tools-api.jar}) do
60
- return Java.ComGoogleAppengineToolsAdmin.AppCfg
61
- end
62
- end
63
-
64
- def with_jars(*jars) # :nodoc:
65
- begin
66
- failed = false
67
- yield
68
- rescue NameError => ex
69
- if failed
70
- raise ex
71
- else
72
- failed = true
73
- jars.each do |jar|
74
- $CLASSPATH << sdk_path(*jar)
75
- end
76
- retry
77
- end
78
- end
79
- end
80
-
81
- # Tries to find the Google App Engine SDK for Java.
82
- #
83
- # Looks for appcfg.sh in these directories (in order):
84
- # - ENV['APPENGINE_JAVA_SDK']/bin
85
- # - each directory in ENV['PATH']
86
- # - '/usr/local/appengine-java-sdk/bin'
87
- # - 'c:\appengine-java-sdk\bin'
88
- #
89
- # Returns File.join(sdk_directory, *pieces)
90
- #
91
- def sdk_path(*pieces)
92
- unless @sdk_path
93
- begin
94
- require 'reggae'
95
- @sdk_path = AppEngine::Jars::Path
96
- rescue Exception
97
- base_path = File.join(ENV['APPENGINE_JAVA_SDK'] || '', 'bin')
98
- exec_paths = ENV['PATH'].split(File::PATH_SEPARATOR)
99
- exec_paths << '/usr/local/appengine-java-sdk/bin'
100
- exec_paths << 'c:\appengine-java-sdk\bin'
101
-
102
- while !exec_paths.empty?
103
- if File.exist?(File.join(base_path, 'appcfg.sh'))
104
- @sdk_path = File.dirname(base_path)
105
- return File.join(@sdk_path, *pieces)
106
- end
107
- base_path = exec_paths.shift
108
- end
109
- raise "Unable to locate the Google App Engine SDK for Java."
110
- end
111
- end
112
- File.join(@sdk_path, *pieces)
113
- end
114
- end
115
- end
116
- end
19
+ $stderr.puts '"appengine-apis/sdk" is deprecated. Use "appengine-sdk"'
20
+ require 'appengine-sdk'
@@ -109,7 +109,13 @@ module AppEngine
109
109
  end
110
110
 
111
111
  def factory # :nodoc:
112
- @factory ||= AppEngine::SDK.load_local_apiproxy_factory.new
112
+ puts caller(0).inspect
113
+ @factory = begin
114
+ Java.ComGoogleAppengineToolsDevelopment.ApiProxyLocalFactory.new
115
+ rescue
116
+ require 'appengine-sdk'
117
+ AppEngine::SDK.load_local_apiproxy_factory.new
118
+ end
113
119
  end
114
120
 
115
121
  # The application directory, or '.' if not set.
@@ -178,6 +184,10 @@ module AppEngine
178
184
  # require 'appengine-apis/local_boot'
179
185
  #
180
186
  def boot(app_dir=nil)
187
+ if AppEngine::ApiProxy.current_environment &&
188
+ AppEngine::ApiProxy.delegate
189
+ return
190
+ end
181
191
  app_dir ||= ENV['APPLICATION_ROOT'] || '.'
182
192
  unless AppEngine::ApiProxy.current_environment
183
193
  env = install_test_env
@@ -193,12 +203,11 @@ module AppEngine
193
203
  # Looks for app.yaml or WEB-INF/appengine-web.xml in +app_dir+
194
204
  # and parses the application id.
195
205
  def get_app_id(app_dir)
206
+ require 'appengine-rack'
207
+ app_id = AppEngine::Rack.app.id
208
+ return app_id if app_id
196
209
  aeweb_path = File.join(app_dir, 'WEB-INF', 'appengine-web.xml')
197
- app_yaml_path = File.join(app_dir, 'app.yaml')
198
- if File.exist?(app_yaml_path)
199
- app_yaml = YAML.load(File.open(app_yaml_path))
200
- return app_yaml['application']
201
- elsif File.exist?(aeweb_path)
210
+ if File.exist?(aeweb_path)
202
211
  require 'rexml/document'
203
212
  aeweb = REXML::Document.new(File.new(aeweb_path))
204
213
  return aeweb.root.elements['application'].text
@@ -172,38 +172,37 @@ module AppEngine
172
172
  end
173
173
 
174
174
 
175
- # A subclass of Net::HTTP that makes requests using Google App Engine's
176
- # URLFetch Service.
177
- #
178
- # To replace the standard implementation throughout your app you can do:
179
- # require 'appengine-apis/urlfetch'
180
- # Net::HTTP = AppEngine::URLFetch::HTTP
181
- class HTTP < Net::HTTP
182
- alias connect on_connect
183
-
184
- def request(req, body=nil, &block)
185
- begin
186
- proto = use_ssl? ? 'https' : 'http'
187
- url = "#{proto}://#{addr_port}#{req.path}"
188
- options = {
189
- :payload => body,
190
- :follow_redirects => false,
191
- :allow_truncated => true,
192
- :method => req.method,
193
- :headers => req
194
- }
195
- res = URLFetch.fetch(url, options)
196
- end while res.kind_of?(Net::HTTPContinue)
197
- res.reading_body(nil, req.response_body_permitted?) {
198
- yield res if block_given?
199
- }
200
- return res
201
- end
202
- end
175
+ # Deprecated alias for Net::HTTP, for backwards compatibility.
176
+ HTTP = Net::HTTP
203
177
  end
204
178
  end
205
179
 
206
180
  module Net # :nodoc:
181
+ # Monkey patch Net::HTTP to makes requests using Google App Engine's
182
+ # URLFetch Service.
183
+ class HTTP
184
+ alias connect on_connect
185
+
186
+ def request(req, body=nil, &block)
187
+ begin
188
+ proto = use_ssl? ? 'https' : 'http'
189
+ url = "#{proto}://#{addr_port}#{req.path}"
190
+ options = {
191
+ :payload => body,
192
+ :follow_redirects => false,
193
+ :allow_truncated => true,
194
+ :method => req.method,
195
+ :headers => req
196
+ }
197
+ res = AppEngine::URLFetch.fetch(url, options)
198
+ end while res.kind_of?(Net::HTTPContinue)
199
+ res.reading_body(nil, req.response_body_permitted?) {
200
+ yield res if block_given?
201
+ }
202
+ return res
203
+ end
204
+ end
205
+
207
206
  class HTTPResponse # :nodoc:
208
207
  alias stream_check_without_urlfetch stream_check
209
208
 
@@ -104,7 +104,7 @@ describe AppEngine::URLFetch do
104
104
  # TODO can't read fetch options, so there's no way to tell if they're set
105
105
  end
106
106
 
107
- describe AppEngine::URLFetch::HTTP do
107
+ describe Net::HTTP do
108
108
  HTTPRequest = com.google.appengine.api.urlfetch.HTTPRequest
109
109
 
110
110
  before :each do
@@ -129,13 +129,13 @@ describe AppEngine::URLFetch::HTTP do
129
129
  fetch_and_return(200) do |req|
130
130
  req.url.to_string.should == @url
131
131
  end
132
- AppEngine::URLFetch::HTTP.get URI.parse(@url)
132
+ Net::HTTP.get URI.parse(@url)
133
133
  end
134
134
 
135
135
 
136
136
  it "should read body" do
137
137
  fetch_and_return(200, 'foo')
138
- AppEngine::URLFetch::HTTP.get(URI.parse(@url)).should == 'foo'
138
+ Net::HTTP.get(URI.parse(@url)).should == 'foo'
139
139
  end
140
140
 
141
141
  it "should support https" do
@@ -145,7 +145,7 @@ describe AppEngine::URLFetch::HTTP do
145
145
  end
146
146
 
147
147
  uri = URI.parse(@url)
148
- http = AppEngine::URLFetch::HTTP.new(uri.host, uri.port)
148
+ http = Net::HTTP.new(uri.host, uri.port)
149
149
  http.use_ssl = true
150
150
  http.get(uri.path).body.should == 'secure'
151
151
  end
metadata CHANGED
@@ -1,42 +1,68 @@
1
1
  --- !ruby/object:Gem::Specification
2
- required_ruby_version: !ruby/object:Gem::Requirement
3
- requirements:
4
- - - '>='
5
- - !ruby/object:Gem::Version
6
- version: "0"
7
- version:
2
+ name: appengine-apis
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Brown
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-27 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: newgem
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.3.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hoe
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.11.0
34
+ version:
35
+ description: |-
36
+ APIs and utilities for using JRuby on Google App Engine.
37
+
38
+ To load the API stubs in IRB simply
39
+ require 'rubygems'
40
+ require 'appengine-apis/local_boot'
41
+
42
+ This will configure access to the same Datastore as running
43
+
44
+ $ dev_appserver.sh .
45
+
46
+ See these classes for an overview of each API:
47
+ - AppEngine::Logger
48
+ - AppEngine::Testing
49
+ - AppEngine::Users
50
+ - AppEngine::Mail
51
+ - AppEngine::Memcache
52
+ - AppEngine::URLFetch
53
+ - AppEngine::Datastore
54
+
55
+ Unless you're implementing your own ORM, you probably want to use the
56
+ DataMapper API instead of the lower level AppEngine::Datastore API.
8
57
  email:
9
58
  - ribrdb@gmail.com
10
- cert_chain: []
59
+ executables: []
60
+
61
+ extensions: []
11
62
 
12
- summary: APIs and utilities for using JRuby on Google App Engine
13
- post_install_message:
14
63
  extra_rdoc_files:
15
64
  - History.txt
16
65
  - Manifest.txt
17
- - README.rdoc
18
- homepage: http://code.google.com/p/appengine-jruby
19
- signing_key:
20
- name: appengine-apis
21
- rdoc_options:
22
- - --main
23
- - README.rdoc
24
- rubyforge_project: appengine-jruby
25
- autorequire:
26
- licenses: []
27
-
28
- executables: []
29
-
30
- description: "APIs and utilities for using JRuby on Google App Engine.\n\nTo load \
31
- the API stubs in IRB simply\n require 'rubygems'\n require 'appengine-apis/local_boot'\n\
32
- \nThis will configure access to the same Datastore as running\n\n $ dev_appserver.sh \
33
- .\n\nSee these classes for an overview of each API:\n- AppEngine::Logger\n- AppEngine::Testing\n\
34
- - AppEngine::Users\n- AppEngine::Mail\n- AppEngine::Memcache\n- AppEngine::URLFetch\n\
35
- - AppEngine::Datastore\n\nUnless you're implementing your own ORM, you probably \
36
- want to use the\nDataMapper API instead of the lower level AppEngine::Datastore \
37
- API."
38
- specification_version: 3
39
- default_executable:
40
66
  files:
41
67
  - History.txt
42
68
  - Manifest.txt
@@ -68,47 +94,34 @@ files:
68
94
  - spec/urlfetch_spec.rb
69
95
  - spec/users_spec.rb
70
96
  - tasks/rspec.rake
97
+ has_rdoc: true
98
+ homepage: http://code.google.com/p/appengine-jruby
99
+ licenses: []
100
+
101
+ post_install_message:
102
+ rdoc_options:
103
+ - --main
104
+ - README.rdoc
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: "0"
112
+ version:
71
113
  required_rubygems_version: !ruby/object:Gem::Requirement
72
114
  requirements:
73
- - - '>='
115
+ - - ">="
74
116
  - !ruby/object:Gem::Version
75
117
  version: "0"
76
118
  version:
77
- extensions: []
78
-
79
- rubygems_version: 1.3.3
80
119
  requirements: []
81
120
 
82
- authors:
83
- - Ryan Brown
84
- date: 2009-07-20 07:00:00 +00:00
85
- platform: ruby
121
+ rubyforge_project: appengine-jruby
122
+ rubygems_version: 1.3.5
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: APIs and utilities for using JRuby on Google App Engine
86
126
  test_files: []
87
127
 
88
- version: !ruby/object:Gem::Version
89
- version: 0.0.5
90
- require_paths:
91
- - lib
92
- dependencies:
93
- - !ruby/object:Gem::Dependency
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - '>='
97
- - !ruby/object:Gem::Version
98
- version: 1.3.0
99
- version:
100
- type: :development
101
- version_requirement:
102
- name: newgem
103
- - !ruby/object:Gem::Dependency
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - '>='
107
- - !ruby/object:Gem::Version
108
- version: 1.8.0
109
- version:
110
- type: :development
111
- version_requirement:
112
- name: hoe
113
- bindir: bin
114
- has_rdoc: true