exchange 0.3.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -2
- data/Gemfile.lock +17 -13
- data/README.rdoc +24 -4
- data/VERSION +1 -1
- data/changelog.rdoc +11 -0
- data/exchange.gemspec +10 -9
- data/lib/exchange.rb +2 -0
- data/lib/exchange/cache/memcached.rb +1 -1
- data/lib/exchange/cache/redis.rb +1 -1
- data/lib/exchange/currency.rb +1 -1
- data/lib/exchange/external_api/base.rb +1 -1
- data/lib/exchange/external_api/ecb.rb +1 -0
- data/lib/exchange/iso_4217.rb +1 -1
- metadata +71 -25
data/Gemfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
|
-
gem "nokogiri", "
|
4
|
+
gem "nokogiri", "<= 1.5.0"
|
5
5
|
gem "json", ">= 1.6.5"
|
6
6
|
gem "memcached", ">= 1.3.0"
|
7
7
|
gem "redis", ">= 2.2.0"
|
@@ -11,7 +11,7 @@ gem "redis", ">= 2.2.0"
|
|
11
11
|
group :development do
|
12
12
|
gem "shoulda", ">= 0"
|
13
13
|
gem "yard", "~> 0.7.4"
|
14
|
-
gem "bundler", "
|
14
|
+
gem "bundler", "> 1.0.0"
|
15
15
|
gem "jeweler", "~> 1.8.3"
|
16
16
|
gem "rspec"
|
17
17
|
end
|
data/Gemfile.lock
CHANGED
@@ -8,33 +8,37 @@ GEM
|
|
8
8
|
git (>= 1.2.5)
|
9
9
|
rake
|
10
10
|
rdoc
|
11
|
-
json (1.6.
|
12
|
-
memcached (1.
|
11
|
+
json (1.6.6)
|
12
|
+
memcached (1.4.1)
|
13
13
|
nokogiri (1.5.0)
|
14
14
|
rake (0.9.2.2)
|
15
15
|
rdoc (3.12)
|
16
16
|
json (~> 1.4)
|
17
17
|
redis (2.2.2)
|
18
|
-
rspec (2.
|
19
|
-
rspec-core (~> 2.
|
20
|
-
rspec-expectations (~> 2.
|
21
|
-
rspec-mocks (~> 2.
|
22
|
-
rspec-core (2.
|
23
|
-
rspec-expectations (2.
|
24
|
-
diff-lcs (~> 1.1.
|
25
|
-
rspec-mocks (2.
|
26
|
-
shoulda (
|
18
|
+
rspec (2.9.0)
|
19
|
+
rspec-core (~> 2.9.0)
|
20
|
+
rspec-expectations (~> 2.9.0)
|
21
|
+
rspec-mocks (~> 2.9.0)
|
22
|
+
rspec-core (2.9.0)
|
23
|
+
rspec-expectations (2.9.1)
|
24
|
+
diff-lcs (~> 1.1.3)
|
25
|
+
rspec-mocks (2.9.0)
|
26
|
+
shoulda (3.0.1)
|
27
|
+
shoulda-context (~> 1.0.0)
|
28
|
+
shoulda-matchers (~> 1.0.0)
|
29
|
+
shoulda-context (1.0.0)
|
30
|
+
shoulda-matchers (1.0.0)
|
27
31
|
yard (0.7.5)
|
28
32
|
|
29
33
|
PLATFORMS
|
30
34
|
ruby
|
31
35
|
|
32
36
|
DEPENDENCIES
|
33
|
-
bundler (
|
37
|
+
bundler (> 1.0.0)
|
34
38
|
jeweler (~> 1.8.3)
|
35
39
|
json (>= 1.6.5)
|
36
40
|
memcached (>= 1.3.0)
|
37
|
-
nokogiri (
|
41
|
+
nokogiri (<= 1.5.0)
|
38
42
|
redis (>= 2.2.0)
|
39
43
|
rspec
|
40
44
|
shoulda
|
data/README.rdoc
CHANGED
@@ -14,14 +14,34 @@ which gets you an exchange at the rates of yesterday.
|
|
14
14
|
|
15
15
|
Imagine the exchange rates getting cached, and you hitting the internet only daily to get new rates (hourly if you're eager to have the absolutely newest ones)
|
16
16
|
|
17
|
-
===
|
17
|
+
=== ISO 4217 Currency formatting
|
18
|
+
On of the issues with currencies is: You never know the format they should be in. With Exchange, you can just use the currencies
|
19
|
+
to_s method, which takes care of the right format for you. A version with symbols is under construction. You can either have a
|
20
|
+
a string with the currency code in front, or just the amount in the right format
|
21
|
+
|
22
|
+
Exchange::Currency.new(49.567, :usd).to_s #=> "USD 49.57"
|
23
|
+
Exchange::Currency.new(45, :jpy).to_s #=> "JPY 45"
|
24
|
+
Exchange::Currency.new(34.34, :omr).to_s #=> "OMR 34.340"
|
25
|
+
Exchange::ISO4217.stringif(34.34, :omr).to_s(:iso) #=> "34.340"
|
26
|
+
|
27
|
+
=== Use three great APIs or your own great API
|
28
|
+
|
29
|
+
Three open APIs are already included:
|
30
|
+
|
31
|
+
- Currency Bot (http://currencybot.github.com/)
|
32
|
+
- Xaviermedia (http://www.xavierforum.com/viewtopic.php?f=5&t=10979&sid=671a685edbfa5dbec219fbc6793d5057)
|
33
|
+
- European Central Bank (http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html)
|
18
34
|
|
19
|
-
Two open APIs are already included: Currency Bot (http://currencybot.github.com/) and Xaviermedia (http://www.xavierforum.com/viewtopic.php?f=5&t=10979&sid=671a685edbfa5dbec219fbc6793d5057)
|
20
35
|
but if you have another API you like to use, it becomes as easy as writing one Class and two methods to use it with the Exchange gem. Just visit the documentation here: http://rubydoc.info/github/beatrichartz/exchange/Exchange/ExternalAPI to see an example of a custom API Extension
|
21
36
|
|
22
|
-
=== Use great caches or your own
|
37
|
+
=== Use great caches or your own great cache
|
38
|
+
|
39
|
+
Also, the gem allows you to use one of three available caching solutions:
|
40
|
+
|
41
|
+
- Memcached via the Memcached gem
|
42
|
+
- Redis via the redis gem
|
43
|
+
- Rails cache (This gem does however not depend on rails)
|
23
44
|
|
24
|
-
Also, the gem allows you to use one of three available caching solutions: Memcached via the Memcached gem, Redis via the redis gem or the Rails cache.
|
25
45
|
But, same here, if you don't like any of these or want to use your own caching solution, it is as easy as writing one Class and two methods to use it with Exchange. Just visit the documentation here: http://rubydoc.info/github/beatrichartz/exchange/Exchange/Cache for an example of a cache extension
|
26
46
|
|
27
47
|
== Installation
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.1
|
data/changelog.rdoc
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
= Changes to Exchange
|
2
|
+
|
3
|
+
== 0.3.0
|
4
|
+
- All Currencies & Rates get handled in BigDecimal now, preventing floating point errors
|
5
|
+
- Major Performance inprovements on the DSL methods
|
6
|
+
- New ECB API configuration possibility
|
7
|
+
- Refactoring of the cache classes, new File cache class for large file storage
|
8
|
+
- ISO 4217 String conversion is now available for all currencies, making it easier to display currencies in their right format
|
9
|
+
|
10
|
+
== Up to 0.2.6
|
11
|
+
- first version, bugfixes (see documentation)
|
data/exchange.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "exchange"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Beat Richartz"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-04-15"
|
13
13
|
s.description = "The Exchange Gem gives you easy access to currency functions directly on your Numbers. Imagine a conversion as easy as \n 1.eur.to_usd\n or even better \n 1.eur.to_usd(:at => Time.now - 84600)\n which gets you an exchange at the rates of yesterday."
|
14
14
|
s.email = "exchange_gem@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
"README.rdoc",
|
27
27
|
"Rakefile",
|
28
28
|
"VERSION",
|
29
|
+
"changelog.rdoc",
|
29
30
|
"exchange.gemspec",
|
30
31
|
"iso4217.yml",
|
31
32
|
"lib/core_extensions/conversability.rb",
|
@@ -74,41 +75,41 @@ Gem::Specification.new do |s|
|
|
74
75
|
s.homepage = "http://github.com/beatrichartz/exchange"
|
75
76
|
s.licenses = ["MIT"]
|
76
77
|
s.require_paths = ["lib"]
|
77
|
-
s.rubygems_version = "1.8.
|
78
|
+
s.rubygems_version = "1.8.22"
|
78
79
|
s.summary = "Simple Exchange Rate operations for your ruby app"
|
79
80
|
|
80
81
|
if s.respond_to? :specification_version then
|
81
82
|
s.specification_version = 3
|
82
83
|
|
83
84
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
84
|
-
s.add_runtime_dependency(%q<nokogiri>, ["
|
85
|
+
s.add_runtime_dependency(%q<nokogiri>, ["<= 1.5.0"])
|
85
86
|
s.add_runtime_dependency(%q<json>, [">= 1.6.5"])
|
86
87
|
s.add_runtime_dependency(%q<memcached>, [">= 1.3.0"])
|
87
88
|
s.add_runtime_dependency(%q<redis>, [">= 2.2.0"])
|
88
89
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
89
90
|
s.add_development_dependency(%q<yard>, ["~> 0.7.4"])
|
90
|
-
s.add_development_dependency(%q<bundler>, ["
|
91
|
+
s.add_development_dependency(%q<bundler>, ["> 1.0.0"])
|
91
92
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
92
93
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
93
94
|
else
|
94
|
-
s.add_dependency(%q<nokogiri>, ["
|
95
|
+
s.add_dependency(%q<nokogiri>, ["<= 1.5.0"])
|
95
96
|
s.add_dependency(%q<json>, [">= 1.6.5"])
|
96
97
|
s.add_dependency(%q<memcached>, [">= 1.3.0"])
|
97
98
|
s.add_dependency(%q<redis>, [">= 2.2.0"])
|
98
99
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
99
100
|
s.add_dependency(%q<yard>, ["~> 0.7.4"])
|
100
|
-
s.add_dependency(%q<bundler>, ["
|
101
|
+
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
101
102
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
102
103
|
s.add_dependency(%q<rspec>, [">= 0"])
|
103
104
|
end
|
104
105
|
else
|
105
|
-
s.add_dependency(%q<nokogiri>, ["
|
106
|
+
s.add_dependency(%q<nokogiri>, ["<= 1.5.0"])
|
106
107
|
s.add_dependency(%q<json>, [">= 1.6.5"])
|
107
108
|
s.add_dependency(%q<memcached>, [">= 1.3.0"])
|
108
109
|
s.add_dependency(%q<redis>, [">= 2.2.0"])
|
109
110
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
110
111
|
s.add_dependency(%q<yard>, ["~> 0.7.4"])
|
111
|
-
s.add_dependency(%q<bundler>, ["
|
112
|
+
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
112
113
|
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
113
114
|
s.add_dependency(%q<rspec>, [">= 0"])
|
114
115
|
end
|
data/lib/exchange.rb
CHANGED
@@ -35,7 +35,7 @@ module Exchange
|
|
35
35
|
def cached api, opts={}, &block
|
36
36
|
raise CachingWithoutBlockError.new('Caching needs a block') unless block_given?
|
37
37
|
begin
|
38
|
-
result = JSON.load
|
38
|
+
result = opts[:plain] ? client.get(key(api, opts)) : JSON.load(client.get(key(api, opts)))
|
39
39
|
rescue ::Memcached::NotFound
|
40
40
|
result = block.call
|
41
41
|
if result && !result.to_s.empty?
|
data/lib/exchange/cache/redis.rb
CHANGED
@@ -36,7 +36,7 @@ module Exchange
|
|
36
36
|
raise CachingWithoutBlockError.new('Caching needs a block') unless block_given?
|
37
37
|
|
38
38
|
if result = client.get(key(api, opts))
|
39
|
-
result = JSON.load
|
39
|
+
result = opts[:plain] ? result : JSON.load(result)
|
40
40
|
else
|
41
41
|
result = block.call
|
42
42
|
if result && !result.to_s.empty?
|
data/lib/exchange/currency.rb
CHANGED
@@ -12,7 +12,7 @@ module Exchange
|
|
12
12
|
include Comparable
|
13
13
|
|
14
14
|
# @attr_reader
|
15
|
-
# @return [
|
15
|
+
# @return [BigDecimal] number The number the currency object has been instantiated from
|
16
16
|
attr_reader :value
|
17
17
|
|
18
18
|
# @attr_reader
|
@@ -77,7 +77,7 @@ module Exchange
|
|
77
77
|
# Exchange::ExternalAPI::Base.new.rate(:usd, :eur, :at => Time.gm(3,23,2009))
|
78
78
|
# #=> 1.232231231
|
79
79
|
def rate(from, to, opts={})
|
80
|
-
rate = Configuration.cache_class.cached(Exchange::Configuration.api, opts.merge(:key_for => [from, to])) do
|
80
|
+
rate = Configuration.cache_class.cached(Exchange::Configuration.api, opts.merge(:key_for => [from, to], :plain => true)) do
|
81
81
|
update(opts)
|
82
82
|
rate_from = self.rates[to.to_s.upcase]
|
83
83
|
rate_to = self.rates[from.to_s.upcase]
|
@@ -33,6 +33,7 @@ module Exchange
|
|
33
33
|
Configuration.cache_class.cached(self.class, :at => time) do
|
34
34
|
Call.new(api_url, :format => :xml, :at => time, :cache => :file, :cache_period => time >= Time.now - 90 * 86400 ? :daily : :monthly) do |result|
|
35
35
|
t = time
|
36
|
+
debugger
|
36
37
|
while (r = result.css("Cube[time=\"#{t.strftime("%Y-%m-%d")}\"]")).empty? && !times.empty?
|
37
38
|
t = times.shift
|
38
39
|
end
|
data/lib/exchange/iso_4217.rb
CHANGED
@@ -14,7 +14,7 @@ module Exchange
|
|
14
14
|
# @return [Hash] The iso427 Definitions with the currency code as keys
|
15
15
|
|
16
16
|
def definitions
|
17
|
-
@@definitions ||= YAML.load_file('iso4217.yml')
|
17
|
+
@@definitions ||= YAML.load_file(File.join(EXCHANGE_GEM_ROOT_PATH, 'iso4217.yml'))
|
18
18
|
end
|
19
19
|
|
20
20
|
# Use this to instantiate a currency amount. For one, it is important that we use BigDecimal here so nothing gets lost because
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exchange
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,27 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - <=
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
21
|
+
version: 1.5.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - <=
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.0
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: json
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 1.6.5
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.6.5
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: memcached
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 1.3.0
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.3.0
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: redis
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: 2.2.0
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.2.0
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: shoulda
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: yard
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ~>
|
@@ -76,21 +101,31 @@ dependencies:
|
|
76
101
|
version: 0.7.4
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.7.4
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: bundler
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
|
-
- -
|
115
|
+
- - ! '>'
|
86
116
|
- !ruby/object:Gem::Version
|
87
117
|
version: 1.0.0
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>'
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.0.0
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: jeweler
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ~>
|
@@ -98,10 +133,15 @@ dependencies:
|
|
98
133
|
version: 1.8.3
|
99
134
|
type: :development
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.8.3
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: rspec
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
@@ -109,7 +149,12 @@ dependencies:
|
|
109
149
|
version: '0'
|
110
150
|
type: :development
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
113
158
|
description: ! "The Exchange Gem gives you easy access to currency functions directly
|
114
159
|
on your Numbers. Imagine a conversion as easy as \n 1.eur.to_usd\n or even better
|
115
160
|
\n 1.eur.to_usd(:at => Time.now - 84600)\n which gets you an exchange at the
|
@@ -130,6 +175,7 @@ files:
|
|
130
175
|
- README.rdoc
|
131
176
|
- Rakefile
|
132
177
|
- VERSION
|
178
|
+
- changelog.rdoc
|
133
179
|
- exchange.gemspec
|
134
180
|
- iso4217.yml
|
135
181
|
- lib/core_extensions/conversability.rb
|
@@ -189,7 +235,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
235
|
version: '0'
|
190
236
|
segments:
|
191
237
|
- 0
|
192
|
-
hash:
|
238
|
+
hash: -901477728370743168
|
193
239
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
240
|
none: false
|
195
241
|
requirements:
|
@@ -198,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
244
|
version: '0'
|
199
245
|
requirements: []
|
200
246
|
rubyforge_project:
|
201
|
-
rubygems_version: 1.8.
|
247
|
+
rubygems_version: 1.8.22
|
202
248
|
signing_key:
|
203
249
|
specification_version: 3
|
204
250
|
summary: Simple Exchange Rate operations for your ruby app
|