lib/r10k/module_repository/forge.rb in r10k-1.3.4 vs lib/r10k/module_repository/forge.rb in r10k-1.3.5
- old
+ new
@@ -16,22 +16,11 @@
# @return [Faraday]
attr_reader :conn
def initialize(forge = 'forge.puppetlabs.com')
@forge = forge
-
- @conn = Faraday.new(
- :url => "https://#{@forge}",
- :user_agent => "Ruby/r10k #{R10K::VERSION}"
- ) do |builder|
- builder.request :multi_json
- builder.response :multi_json
-
- # This needs to be _after_ request/response configuration for testing
- # purposes. This comment is the result of much consternation.
- builder.adapter Faraday.default_adapter
- end
+ @conn = make_conn
end
# Query for all published versions of a module
#
# @example
@@ -41,11 +30,10 @@
#
# @param module_name [String] The fully qualified module name
# @return [Array<String>] All published versions of the given module
def versions(module_name)
response = @conn.get("/api/v1/releases.json", {'module' => module_name})
-
response.body[module_name].map do |version_info|
version_info['version']
end
end
@@ -58,7 +46,26 @@
#
# @param module_name [String] The fully qualified module name
# @return [String] The latest published version of the given module
def latest_version(module_name)
versions(module_name).last
+ end
+
+ private
+
+ def make_conn
+ # Force use of json_pure with multi_json on Ruby 1.8.7
+ multi_json_opts = (RUBY_VERSION == "1.8.7" ? {:adapter => :json_pure} : {})
+
+ Faraday.new(
+ :url => "https://#{@forge}",
+ :user_agent => "Ruby/r10k #{R10K::VERSION}"
+ ) do |builder|
+ builder.request(:multi_json, multi_json_opts)
+ builder.response(:multi_json, multi_json_opts)
+
+ # This needs to be _after_ request/response configuration for testing
+ # purposes. Without this ordering the tests get badly mangled.
+ builder.adapter(Faraday.default_adapter)
+ end
end
end