cloud_tempfile 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +3 -4
- data/CHANGELOG.md +11 -2
- data/README.md +16 -16
- data/cloud_tempfile.gemspec +4 -4
- data/gemfiles/rails_3.1.gemfile +1 -1
- data/gemfiles/rails_3.2.gemfile +1 -1
- data/gemfiles/rails_4.0.gemfile +1 -1
- data/lib/cloud_tempfile/cloud_tempfile.rb +3 -2
- data/lib/cloud_tempfile/config.rb +2 -1
- data/lib/cloud_tempfile/storage.rb +2 -2
- data/lib/cloud_tempfile/version.rb +1 -1
- data/spec/unit/storage_spec.rb +76 -2
- metadata +22 -22
data/.travis.yml
CHANGED
@@ -11,10 +11,9 @@ before_install:
|
|
11
11
|
- gem install bundler
|
12
12
|
env:
|
13
13
|
global:
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
# - secure: "Hmx7D7/p2LlA2ya/xBIz21s/8MLIQCjvfYB7RWBNlWk1PfqRLAz8wX6TUVWy\nfAFktMjLnpRLRYO7AgQS4jcfQ/k0HYK9IXzqXzeI00TNm0Vwp0TCXhawiOFT\nSvUMhs2/1vRfjN0HOJ75XlWRhJzV/G5rOMiafAZLsVzN/0iiB8g="
|
14
|
+
addons:
|
15
|
+
code_climate:
|
16
|
+
repo_token: 08219ed943b69ed2db93fc18ecd00f72f6dabc4cdb9792e22a731c0ff2c2b818
|
18
17
|
matrix:
|
19
18
|
include:
|
20
19
|
- rvm: 1.9.3
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,18 @@
|
|
1
1
|
# RELEASE HISTORY
|
2
2
|
|
3
|
-
## v0.0.
|
3
|
+
## v0.0.2 / 2014-03-13
|
4
4
|
|
5
|
-
Version 0.0.
|
5
|
+
Version 0.0.2 (Kevin Bolduc)
|
6
6
|
|
7
7
|
Changes:
|
8
|
+
* #1 Add Code Climate metric reporting support
|
9
|
+
* #2 Allow the option to override the expiry when uploading a file to the Cloud
|
10
|
+
|
11
|
+
## v0.0.1 / 2014-03-12
|
8
12
|
|
13
|
+
Version 0.0.1 (Kevin Bolduc)
|
14
|
+
|
15
|
+
Changes:
|
16
|
+
* v0.0.1 CloudTempfile
|
17
|
+
* Updated README.md
|
9
18
|
* Initial commit
|
data/README.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
[![Build Status](https://secure.travis-ci.org/kbolduc/cloud_tempfile.png)](http://travis-ci.org/kbolduc/cloud_tempfile)
|
2
|
+
[![Dependency Status](https://gemnasium.com/kbolduc/cloud_tempfile.png)](https://gemnasium.com/kbolduc/cloud_tempfile)
|
3
|
+
[![Code Climate](https://codeclimate.com/github/kbolduc/cloud_tempfile.png)](https://codeclimate.com/github/kbolduc/cloud_tempfile)
|
4
|
+
[![Coverage Status](https://coveralls.io/repos/kbolduc/cloud_tempfile/badge.png?branch=master)](https://coveralls.io/r/kbolduc/cloud_tempfile?branch=master)
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/cloud_tempfile.png)](http://badge.fury.io/rb/cloud_tempfile)
|
6
|
+
[![Gittip](http://img.shields.io/gittip/kbolduc.png)](https://www.gittip.com/kbolduc/)
|
2
7
|
|
3
8
|
# CloudTempfile
|
4
9
|
|
@@ -86,6 +91,7 @@ The generator will create a Rails initializer at `config/initializers/cloud_temp
|
|
86
91
|
|
87
92
|
``` ruby
|
88
93
|
CloudTempfile.configure do |config|
|
94
|
+
config.enabled = true
|
89
95
|
config.fog_provider = 'AWS'
|
90
96
|
config.fog_directory = ENV['FOG_DIRECTORY']
|
91
97
|
config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
|
@@ -110,6 +116,7 @@ The generator will create a YAML file at `config/cloud_tempfile.yml`.
|
|
110
116
|
|
111
117
|
``` yaml
|
112
118
|
defaults: &defaults
|
119
|
+
enabled: true
|
113
120
|
fog_provider: "AWS"
|
114
121
|
fog_directory: "rails-app-assets"
|
115
122
|
aws_access_key_id: "<%= ENV['AWS_ACCESS_KEY_ID'] %>"
|
@@ -122,9 +129,11 @@ defaults: &defaults
|
|
122
129
|
|
123
130
|
development:
|
124
131
|
<<: *defaults
|
132
|
+
enabled: false
|
125
133
|
|
126
134
|
test:
|
127
135
|
<<: *defaults
|
136
|
+
enabled: false
|
128
137
|
|
129
138
|
production:
|
130
139
|
<<: *defaults
|
@@ -140,7 +149,8 @@ CloudTempfile.config.fog_provider == ENV['FOG_PROVIDER']
|
|
140
149
|
|
141
150
|
#### CloudTempfile (optional)
|
142
151
|
|
143
|
-
* **enabled**: (`true, false`) when false, will disable CloudTempfile and local Tempfile will be created instead.
|
152
|
+
* **enabled**: (`true, false`) when false, will disable CloudTempfile and local Tempfile will be created instead.
|
153
|
+
* **default:** `'false'` (disabled)
|
144
154
|
|
145
155
|
#### Fog (Required)
|
146
156
|
* **fog\_provider**: your storage provider *AWS* (S3) or *Rackspace* (Cloud Files) or *Google* (Google Storage)
|
@@ -193,27 +203,17 @@ production:
|
|
193
203
|
fog_region: 'eu-west-1'
|
194
204
|
```
|
195
205
|
|
196
|
-
## Fail Silently
|
197
|
-
|
198
|
-
With the `fail_silently` option enabled, when running `rake assets:precompile` CloudTempfile will never throw an error due to missing configuration variables.
|
199
|
-
|
200
|
-
With the new **user_env_compile** feature of Heroku (see above), this is no longer required or recommended. Yet was added for the following reasons:
|
201
|
-
|
202
|
-
> With Rails 3.1 on the Heroku cedar stack, the deployment process automatically runs `rake assets:precompile`. If you are using **ENV** variable style configuration. Due to the methods with which Heroku compile slugs, there will be an error raised by asset\_sync as the environment is not available. This causes heroku to install the `rails31_enable_runtime_asset_compilation` plugin which is not necessary when using **cloud_tempfile** and also massively slows down the first incoming requests to your app.
|
203
|
-
|
204
|
-
> To prevent this part of the deploy from failing (cloud_tempfile raising a config error), but carry on as normal set `fail_silently` to true in your configuration and ensure to run `heroku run rake assets:precompile` after deploy.
|
205
|
-
|
206
206
|
## Rake Task
|
207
207
|
|
208
208
|
A rake task is included within the **cloud_tempfile** gem to perform the clean up:
|
209
209
|
|
210
210
|
``` ruby
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
211
|
+
namespace :cloud_tempfile do
|
212
|
+
desc "Clean up expired temp files from the remote storage"
|
213
|
+
task :clear => :environment do
|
214
|
+
CloudTempfile.clear
|
215
|
+
end
|
215
216
|
end
|
216
|
-
end
|
217
217
|
```
|
218
218
|
|
219
219
|
## Todo
|
data/cloud_tempfile.gemspec
CHANGED
@@ -7,17 +7,17 @@ require "cloud_tempfile/version"
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "cloud_tempfile"
|
9
9
|
s.version = CloudTempfile::VERSION
|
10
|
-
s.date = "2014-
|
10
|
+
s.date = "2014-03-13"
|
11
11
|
s.platform = Gem::Platform::RUBY
|
12
12
|
s.authors = ["Kevin Bolduc"]
|
13
13
|
s.email = ["kevin.bolduc@gmail.com"]
|
14
|
-
s.homepage = "
|
14
|
+
s.homepage = "http://github.com/kbolduc/cloud_tempfile"
|
15
15
|
s.summary = %q{Tempfile creation directly on cloud storage (S3, Google, Rackspace etc] which can be utilized in a Ruby application}
|
16
|
-
s.description = %q{
|
16
|
+
s.description = %q{Tempfile creation directly on cloud storage (S3, Google, Rackspace etc] which can be utilized in a Ruby application}
|
17
17
|
s.license = 'MIT'
|
18
18
|
|
19
19
|
# rubyforge
|
20
|
-
|
20
|
+
s.rubyforge_project = "cloud_tempfile"
|
21
21
|
|
22
22
|
s.add_dependency('fog', ">= 1.8.0")
|
23
23
|
s.add_dependency('activemodel')
|
data/gemfiles/rails_3.1.gemfile
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem
|
5
|
+
gem 'rcov', :platforms => :mri_18, :group => [:development, :test]
|
6
6
|
gem "simplecov", :platforms=>[:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group=>[:development, :test], :require=>false
|
7
7
|
gem "jruby-openssl", :platform=>:jruby
|
8
8
|
gem "rails", "~> 3.1.0"
|
data/gemfiles/rails_3.2.gemfile
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem
|
5
|
+
gem 'rcov', :platforms => :mri_18, :group => [:development, :test]
|
6
6
|
gem "simplecov", :platforms=>[:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group=>[:development, :test], :require=>false
|
7
7
|
gem "jruby-openssl", :platform=>:jruby
|
8
8
|
gem "rails", "~> 3.2.0"
|
data/gemfiles/rails_4.0.gemfile
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem
|
5
|
+
gem 'rcov', :platforms => :mri_18, :group => [:development, :test]
|
6
6
|
gem "simplecov", :platforms=>[:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group=>[:development, :test], :require=>false
|
7
7
|
gem "jruby-openssl", :platform=>:jruby
|
8
8
|
gem "rails", "~> 4.0.0"
|
@@ -42,6 +42,7 @@ module CloudTempfile
|
|
42
42
|
# == Options
|
43
43
|
# [:+file_name+:] The file name to use for the Tempfile
|
44
44
|
# [:+file_raw_data+:] The raw file data to be persisted
|
45
|
+
# [:+expiry+:] The expiry is the number of seconds the file will available publicly
|
45
46
|
#
|
46
47
|
# @param [Hash] options The Hash of options
|
47
48
|
# @return [File]
|
@@ -53,9 +54,9 @@ module CloudTempfile
|
|
53
54
|
|
54
55
|
with_config do
|
55
56
|
if !(config && config.local?)
|
56
|
-
return self.storage.upload_file(_file_name, _file_raw_data)
|
57
|
+
return self.storage.upload_file(_file_name, _file_raw_data, options)
|
57
58
|
else
|
58
|
-
return self.storage.local_file(_file_name, _file_raw_data)
|
59
|
+
return self.storage.local_file(_file_name, _file_raw_data, options)
|
59
60
|
end
|
60
61
|
end
|
61
62
|
end
|
@@ -57,12 +57,13 @@ module CloudTempfile
|
|
57
57
|
|
58
58
|
self.public = false
|
59
59
|
self.prefix = "tmp/"
|
60
|
+
self.expiry = 600 # 10 Min = 600 Seconds
|
60
61
|
|
61
62
|
self.fail_silently = false
|
62
63
|
self.log_silently = true
|
63
64
|
|
64
65
|
self.clean_up = false
|
65
|
-
self.clean_up_older_than =
|
66
|
+
self.clean_up_older_than = 86400 # 1 Day = 86400 Seconds
|
66
67
|
|
67
68
|
load_yml! if defined?(Rails) && yml_exists?
|
68
69
|
end
|
@@ -26,7 +26,7 @@ module CloudTempfile
|
|
26
26
|
@directory ||= connection.directories.get(self.config.fog_directory, :prefix => prefix)
|
27
27
|
end
|
28
28
|
|
29
|
-
# This action will upload a
|
29
|
+
# This action will upload a Fog::Storage::File to the specified directory
|
30
30
|
# @return [Fog::Storage::File]
|
31
31
|
def upload_file(f, body, options={})
|
32
32
|
file = init_fog_file(f, body, options)
|
@@ -99,7 +99,7 @@ module CloudTempfile
|
|
99
99
|
|
100
100
|
aws_acl = (self.config.aws_acl?)? self.config.aws_access_control_list.to_s : nil
|
101
101
|
# expiry is the number of seconds the file will available publicly
|
102
|
-
expiry = (self.config.expiry?)? self.config.expiry.to_i : nil
|
102
|
+
expiry = options.has_key?(:expiry)? options[:expiry] : ((self.config.expiry?)? self.config.expiry.to_i : nil)
|
103
103
|
ext = File.extname(filename)[1..-1] # The file extension
|
104
104
|
mime = MultiMime.lookup(ext) # Look up the content type based off the file extension
|
105
105
|
prefix = options.has_key?(:prefix)? options[:prefix] : self.config.prefix
|
data/spec/unit/storage_spec.rb
CHANGED
@@ -185,7 +185,7 @@ describe CloudTempfile::Storage do
|
|
185
185
|
end
|
186
186
|
|
187
187
|
file = @storage.upload_file(filename, file)
|
188
|
-
file.public_url.
|
188
|
+
file.public_url.should_not be_nil if !@mock
|
189
189
|
end
|
190
190
|
|
191
191
|
it 'has private visibility and expiry' do
|
@@ -207,7 +207,81 @@ describe CloudTempfile::Storage do
|
|
207
207
|
end
|
208
208
|
|
209
209
|
file = @storage.upload_file(filename, file)
|
210
|
-
|
210
|
+
if !@mock
|
211
|
+
file.should_not be_nil
|
212
|
+
file.public_url.should_not be_nil
|
213
|
+
file.public_url.should include((Time.now.utc.to_i + @config.expiry).to_s.chop.chop)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
describe 'AWS#upload_file with CloudTempfile private', :ignore => false do
|
219
|
+
before(:each) do
|
220
|
+
@config = CloudTempfile::Config.new
|
221
|
+
@config.enabled = true
|
222
|
+
@config.fog_provider = "AWS"
|
223
|
+
@config.aws_access_key_id = !@mock? ENV['AWS_ACCESS_KEY_ID'] : 'KEY'
|
224
|
+
@config.aws_secret_access_key = !@mock? ENV['AWS_SECRET_ACCESS_KEY'] : 'SECRET_KEY'
|
225
|
+
@config.fog_directory = !@mock? ENV['FOG_DIRECTORY'] : 'bucket'
|
226
|
+
@config.prefix = "tmp-test/"
|
227
|
+
@config.public = false
|
228
|
+
@config.expiry = 60
|
229
|
+
|
230
|
+
#Enable/Disable Fog mocking by enivronment variables for testing
|
231
|
+
@mock = ((ENV['RSPEC_MOCK'].nil?)? ((ENV['AWS_ACCESS_KEY_ID'].nil?)? true : ENV['AWS_ACCESS_KEY_ID']) : ENV['RSPEC_MOCK']=='true')
|
232
|
+
Fog.mock! if @mock
|
233
|
+
|
234
|
+
@storage = CloudTempfile::Storage.new(@config)
|
235
|
+
end
|
236
|
+
|
237
|
+
after(:each) do
|
238
|
+
Fog.unmock! if @mock
|
239
|
+
end
|
240
|
+
|
241
|
+
|
242
|
+
it 'should have the expiry set when private' do
|
243
|
+
filename = 'TEST.pdf'
|
244
|
+
file = File.open(File.dirname(__FILE__) + '/../fixtures/assets/' + filename)
|
245
|
+
|
246
|
+
if @mock
|
247
|
+
directory = double
|
248
|
+
files = double
|
249
|
+
|
250
|
+
@storage.stub(:directory).and_return(directory)
|
251
|
+
directory.stub(:files).and_return(files)
|
252
|
+
|
253
|
+
files.should_receive(:create)
|
254
|
+
end
|
255
|
+
|
256
|
+
file = @storage.upload_file(filename, file)
|
257
|
+
if !@mock
|
258
|
+
file.should_not be_nil
|
259
|
+
file.public_url.should_not be_nil
|
260
|
+
file.public_url.should include((Time.now.utc.to_i + @config.expiry).to_s.chop.chop)
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'should accept the option to override the expiry when private' do
|
265
|
+
filename = 'TEST.pdf'
|
266
|
+
file = File.open(File.dirname(__FILE__) + '/../fixtures/assets/' + filename)
|
267
|
+
|
268
|
+
if @mock
|
269
|
+
directory = double
|
270
|
+
files = double
|
271
|
+
|
272
|
+
@storage.stub(:directory).and_return(directory)
|
273
|
+
directory.stub(:files).and_return(files)
|
274
|
+
|
275
|
+
files.should_receive(:create)
|
276
|
+
end
|
277
|
+
|
278
|
+
expiry = 1000
|
279
|
+
file = @storage.upload_file(filename, file, :expiry => expiry)
|
280
|
+
if !@mock
|
281
|
+
file.should_not be_nil
|
282
|
+
file.public_url.should_not be_nil
|
283
|
+
file.public_url.should include((Time.now.utc.to_i + expiry).to_s.chop.chop)
|
284
|
+
end
|
211
285
|
end
|
212
286
|
end
|
213
287
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloud_tempfile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
16
|
-
requirement: &
|
16
|
+
requirement: &70192949525660 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.8.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70192949525660
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activemodel
|
27
|
-
requirement: &
|
27
|
+
requirement: &70192949525220 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70192949525220
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70192949524720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70192949524720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70192949524280 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70192949524280
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70192949540200 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70192949540200
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: cloud_tempfile
|
71
|
-
requirement: &
|
71
|
+
requirement: &70192949539780 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70192949539780
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: appraisal
|
82
|
-
requirement: &
|
82
|
+
requirement: &70192949539360 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,9 +87,9 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
-
description:
|
92
|
-
|
90
|
+
version_requirements: *70192949539360
|
91
|
+
description: Tempfile creation directly on cloud storage (S3, Google, Rackspace etc]
|
92
|
+
which can be utilized in a Ruby application
|
93
93
|
email:
|
94
94
|
- kevin.bolduc@gmail.com
|
95
95
|
executables: []
|
@@ -138,7 +138,7 @@ files:
|
|
138
138
|
- spec/unit/multi_mime_spec.rb
|
139
139
|
- spec/unit/railsless_spec.rb
|
140
140
|
- spec/unit/storage_spec.rb
|
141
|
-
homepage:
|
141
|
+
homepage: http://github.com/kbolduc/cloud_tempfile
|
142
142
|
licenses:
|
143
143
|
- MIT
|
144
144
|
post_install_message:
|
@@ -153,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
153
|
version: '0'
|
154
154
|
segments:
|
155
155
|
- 0
|
156
|
-
hash:
|
156
|
+
hash: 2622981772994909634
|
157
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
158
|
none: false
|
159
159
|
requirements:
|
@@ -162,9 +162,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
162
|
version: '0'
|
163
163
|
segments:
|
164
164
|
- 0
|
165
|
-
hash:
|
165
|
+
hash: 2622981772994909634
|
166
166
|
requirements: []
|
167
|
-
rubyforge_project:
|
167
|
+
rubyforge_project: cloud_tempfile
|
168
168
|
rubygems_version: 1.8.10
|
169
169
|
signing_key:
|
170
170
|
specification_version: 3
|