Patch to solve Ruby 1.8.7 incompatibility.

This commit is contained in:
Bob Aman 2012-02-22 15:09:35 +03:00
parent 2eb6da99d3
commit 1632e98a05
1 changed files with 10 additions and 6 deletions

View File

@ -74,22 +74,26 @@ module Google
Google::INFLECTOR.camelize(api.name) Google::INFLECTOR.camelize(api.name)
api_version_string = api_version_string =
Google::INFLECTOR.camelize(api.version).gsub('.', '_') Google::INFLECTOR.camelize(api.version).gsub('.', '_')
if Google::APIClient::Schema.const_defined?(api_name_string, false) # This is for compatibility with Ruby 1.8.7.
# TODO(bobaman) Remove this when we eventually stop supporting 1.8.7.
args = []
args << false if Class.method(:const_defined?).arity != 1
if Google::APIClient::Schema.const_defined?(api_name_string, *args)
api_name = Google::APIClient::Schema.const_get( api_name = Google::APIClient::Schema.const_get(
api_name_string, false api_name_string, *args
) )
else else
api_name = Google::APIClient::Schema.const_set( api_name = Google::APIClient::Schema.const_set(
api_name_string, Module.new api_name_string, Module.new
) )
end end
if api_name.const_defined?(api_version_string, false) if api_name.const_defined?(api_version_string, *args)
api_version = api_name.const_get(api_version_string, false) api_version = api_name.const_get(api_version_string, *args)
else else
api_version = api_name.const_set(api_version_string, Module.new) api_version = api_name.const_set(api_version_string, Module.new)
end end
if api_version.const_defined?(schema_name, false) if api_version.const_defined?(schema_name, *args)
schema_class = api_version.const_get(schema_name, false) schema_class = api_version.const_get(schema_name, *args)
end end
end end