cloud_tempfile 0.0.1

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.
Files changed (43) hide show
  1. data/.gitignore +18 -0
  2. data/.rvmrc +2 -0
  3. data/.travis.yml +30 -0
  4. data/Appraisals +11 -0
  5. data/CHANGELOG.md +9 -0
  6. data/Gemfile +15 -0
  7. data/LICENSE +20 -0
  8. data/README.md +232 -0
  9. data/Rakefile +43 -0
  10. data/cloud_tempfile.gemspec +38 -0
  11. data/gemfiles/rails_3.1.gemfile +10 -0
  12. data/gemfiles/rails_3.2.gemfile +10 -0
  13. data/gemfiles/rails_4.0.gemfile +10 -0
  14. data/lib/cloud_tempfile/cloud_tempfile.rb +106 -0
  15. data/lib/cloud_tempfile/config.rb +206 -0
  16. data/lib/cloud_tempfile/engine.rb +53 -0
  17. data/lib/cloud_tempfile/multi_mime.rb +22 -0
  18. data/lib/cloud_tempfile/railtie.rb +11 -0
  19. data/lib/cloud_tempfile/storage.rb +151 -0
  20. data/lib/cloud_tempfile/version.rb +9 -0
  21. data/lib/cloud_tempfile.rb +11 -0
  22. data/lib/ext/fog/aws/models/storage/file.rb +19 -0
  23. data/lib/generators/cloud_tempfile/install_generator.rb +71 -0
  24. data/lib/generators/cloud_tempfile/templates/cloud_tempfile.rb +41 -0
  25. data/lib/generators/cloud_tempfile/templates/cloud_tempfile.yml +52 -0
  26. data/lib/tasks/cloud_tempfile_tasks.rake +7 -0
  27. data/spec/dummy_app/Rakefile +27 -0
  28. data/spec/fixtures/assets/TEST.doc +0 -0
  29. data/spec/fixtures/assets/TEST.docx +0 -0
  30. data/spec/fixtures/assets/TEST.pdf +0 -0
  31. data/spec/fixtures/assets/TEST.rtf +1 -0
  32. data/spec/fixtures/aws_with_yml/config/cloud_tempfile.yml +22 -0
  33. data/spec/fixtures/google_with_yml/config/.gitkeep +0 -0
  34. data/spec/fixtures/rackspace_with_yml/config/.gitkeep +0 -0
  35. data/spec/fixtures/with_invalid_yml/config/cloud_tempfile.yml +22 -0
  36. data/spec/fixtures/without_yml/public/.gitkeep +0 -0
  37. data/spec/integration/.gitkeep +0 -0
  38. data/spec/spec_helper.rb +63 -0
  39. data/spec/unit/cloud_tempfile_spec.rb +208 -0
  40. data/spec/unit/multi_mime_spec.rb +48 -0
  41. data/spec/unit/railsless_spec.rb +50 -0
  42. data/spec/unit/storage_spec.rb +260 -0
  43. metadata +189 -0
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ # require "rake"
3
+ ENV['RAILS_ROOT'] = File.dirname(__FILE__)
4
+ # Set up gems listed in the Gemfile.
5
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
6
+ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
7
+ # require 'rails/all'
8
+ require "action_controller/railtie"
9
+ require "sprockets/railtie"
10
+ if defined?(Bundler)
11
+ Bundler.require(*Rails.groups(:assets => %w(development test)))
12
+ end
13
+ module CloudTempfileTest
14
+ class Application < Rails::Application
15
+ config.encoding = "utf-8"
16
+ config.filter_parameters += [:password]
17
+ config.eager_load = false
18
+ config.assets.enabled = true
19
+ config.assets.version = '1.0'
20
+ config.secret_token = 'bf196b4383deefa4e0120a6ef1d9af1cc45f5c4ebd04405'
21
+ config.session_store :cookie_store, :key => '_cloud_tempfile_test_session', :secret => 'xxxx'
22
+ config.active_support.deprecation = :log
23
+ config.assets.compress = true
24
+ end
25
+ end
26
+ CloudTempfileTest::Application.initialize!
27
+ CloudTempfileTest::Application.load_tasks
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {\rtf1\adeflang1025\ansi\ansicpg10000\uc1\adeff0\deff0\stshfdbch15\stshfloch36\stshfhich36\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe1041\themelangcs0{\fonttbl{\f0\fbidi \fnil\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
@@ -0,0 +1,22 @@
1
+ defaults: &defaults
2
+ fog_provider: "AWS"
3
+ aws_access_key_id: "xxxx"
4
+ aws_secret_access_key: "zzzz"
5
+ fog_region: "us-east-1"
6
+
7
+ development:
8
+ <<: *defaults
9
+ fog_directory: "rails_app_development"
10
+
11
+ test:
12
+ <<: *defaults
13
+ fog_directory: "rails_app_test"
14
+
15
+ staging:
16
+ <<: *defaults
17
+ enabled: false
18
+ fog_directory: "rails_app_staging"
19
+
20
+ production:
21
+ <<: *defaults
22
+ fog_directory: "rails_app_production"
File without changes
File without changes
@@ -0,0 +1,22 @@
1
+ defaults: &defaults
2
+ fog_provider= "AWS"
3
+ aws_access_key_id: "xxxx"
4
+ aws_secret_access_key: "zzzz"
5
+ fog_region: "us-east-1"
6
+
7
+ development:
8
+ <<: *defaults
9
+ enabled: false
10
+ fog_directory: "rails_app_development"
11
+
12
+ test:
13
+ <<: *defaults
14
+ fog_directory: "rails_app_test"
15
+
16
+ staging:
17
+ <<: *defaults
18
+ fog_directory: "rails_app_staging"
19
+
20
+ production:
21
+ <<: *defaults
22
+ fog_directory: "rails_app_production"
File without changes
File without changes
@@ -0,0 +1,63 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ begin
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ add_filter 'spec'
8
+ end
9
+ rescue LoadError
10
+ # SimpleCov ain't available - continue
11
+ end
12
+
13
+ begin
14
+ Bundler.setup(:default, :development)
15
+ rescue Bundler::BundlerError => e
16
+ $stderr.puts e.message
17
+ $stderr.puts "Run `bundle install` to install missing gems"
18
+ exit e.status_code
19
+ end
20
+
21
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
22
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
23
+ require 'cloud_tempfile'
24
+
25
+ require 'rspec'
26
+ RSpec.configure do |config|
27
+ config.mock_framework = :rspec
28
+ end
29
+
30
+ shared_context "mock without Rails" do
31
+ before(:each) do
32
+ if defined? Rails
33
+ Object.send(:remove_const, :Rails)
34
+ end
35
+ CloudTempfile.stub(:log)
36
+ end
37
+ end
38
+
39
+
40
+ shared_context "mock Rails" do
41
+ before(:each) do
42
+ unless defined? Rails
43
+ Rails = double 'Rails'
44
+ end
45
+ Rails.stub(:env).and_return('test')
46
+ Rails.stub :application => double('application')
47
+ Rails.application.stub :config => double('config')
48
+ CloudTempfile.stub(:log)
49
+ end
50
+ end
51
+
52
+ shared_context "mock Rails without_yml" do
53
+ include_context "mock Rails"
54
+
55
+ before(:each) do
56
+ set_rails_root('without_yml')
57
+ Rails.stub(:public_path).and_return(Rails.root.join('public').to_s)
58
+ end
59
+ end
60
+
61
+ def set_rails_root(path)
62
+ Rails.stub(:root).and_return(Pathname.new(File.join(File.dirname(__FILE__), 'fixtures', path)))
63
+ end
@@ -0,0 +1,208 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe CloudTempfile do
4
+ include_context "mock Rails without_yml"
5
+
6
+ describe 'with initializer' do
7
+ before(:each) do
8
+ CloudTempfile.config = CloudTempfile::Config.new
9
+ CloudTempfile.configure do |config|
10
+ config.fog_provider = 'AWS'
11
+ config.aws_access_key_id = 'aaaa'
12
+ config.aws_secret_access_key = 'bbbb'
13
+ config.fog_directory = 'mybucket'
14
+ config.fog_region = 'eu-west-1'
15
+ end
16
+ end
17
+
18
+ it "should default CloudTempfile to disabled" do
19
+ CloudTempfile.config.enabled?.should be_false
20
+ CloudTempfile.enabled?.should be_false
21
+ end
22
+
23
+ it "should configure provider as AWS" do
24
+ CloudTempfile.config.fog_provider.should == 'AWS'
25
+ CloudTempfile.config.should be_aws
26
+ end
27
+
28
+ it "should configure clean up remote files" do
29
+ CloudTempfile.config.clean_up?.should == false
30
+ end
31
+
32
+ it "should configure aws_access_key" do
33
+ CloudTempfile.config.aws_access_key_id.should == "aaaa"
34
+ end
35
+
36
+ it "should configure aws_secret_access_key" do
37
+ CloudTempfile.config.aws_secret_access_key.should == "bbbb"
38
+ end
39
+
40
+ it "should configure aws_access_key" do
41
+ CloudTempfile.config.fog_directory.should == "mybucket"
42
+ end
43
+
44
+ it "should configure fog_region" do
45
+ CloudTempfile.config.fog_region.should == "eu-west-1"
46
+ end
47
+
48
+ it "should default log_silently to true" do
49
+ CloudTempfile.config.log_silently.should be_true
50
+ end
51
+ end
52
+
53
+ describe 'from yml' do
54
+ before(:each) do
55
+ set_rails_root('aws_with_yml')
56
+ CloudTempfile.config = CloudTempfile::Config.new
57
+ end
58
+
59
+ it "should default CloudTempfile to disabled" do
60
+ CloudTempfile.config.enabled?.should be_false
61
+ CloudTempfile.enabled?.should be_false
62
+ end
63
+
64
+ it "should configure aws_access_key_id" do
65
+ CloudTempfile.config.aws_access_key_id.should == "xxxx"
66
+ end
67
+
68
+ it "should configure aws_secret_access_key" do
69
+ CloudTempfile.config.aws_secret_access_key.should == "zzzz"
70
+ end
71
+
72
+ it "should configure fog_directory" do
73
+ CloudTempfile.config.fog_directory.should == "rails_app_test"
74
+ end
75
+
76
+ it "should configure fog_region" do
77
+ CloudTempfile.config.fog_region.should == "us-east-1"
78
+ end
79
+
80
+ it "should configure clean up remote files" do
81
+ CloudTempfile.config.clean_up?.should == false
82
+ end
83
+ end
84
+
85
+ describe 'from yml, overriding to stagging envrionment (disabled)' do
86
+ before(:each) do
87
+ Rails.env.replace('staging')
88
+ set_rails_root('aws_with_yml')
89
+ CloudTempfile.config = CloudTempfile::Config.new
90
+ end
91
+
92
+ it "should be disabled" do
93
+ expect{ CloudTempfile.clear }.not_to raise_error()
94
+ end
95
+
96
+ after(:each) do
97
+ Rails.env.replace('test')
98
+ end
99
+ end
100
+
101
+ describe 'with no configuration' do
102
+ before(:each) do
103
+ CloudTempfile.config = CloudTempfile::Config.new
104
+ end
105
+
106
+ it "should be invalid" do
107
+ expect{ CloudTempfile.sync }.to raise_error()
108
+ end
109
+ end
110
+
111
+ describe "with no other configuration than enabled = false" do
112
+ before(:each) do
113
+ CloudTempfile.config = CloudTempfile::Config.new
114
+ CloudTempfile.configure do |config|
115
+ config.enabled = false
116
+ end
117
+ end
118
+
119
+ it "should do nothing, without complaining" do
120
+ expect{ CloudTempfile.clear }.not_to raise_error()
121
+ end
122
+ end
123
+
124
+ describe 'with fail_silent configuration' do
125
+ before(:each) do
126
+ CloudTempfile.stub(:stderr).and_return(@stderr = StringIO.new)
127
+ CloudTempfile.config = CloudTempfile::Config.new
128
+ CloudTempfile.configure do |config|
129
+ config.fail_silently = true
130
+ end
131
+ end
132
+
133
+ it "should not raise an invalid exception" do
134
+ expect{ CloudTempfile.clear }.not_to raise_error()
135
+ end
136
+ end
137
+
138
+ describe 'with disabled config' do
139
+ before(:each) do
140
+ CloudTempfile.stub(:stderr).and_return(@stderr = StringIO.new)
141
+ CloudTempfile.config = CloudTempfile::Config.new
142
+ CloudTempfile.configure do |config|
143
+ config.enabled = false
144
+ end
145
+ end
146
+
147
+ it "should not raise an invalid exception" do
148
+ lambda{ CloudTempfile.clear }.should_not raise_error()
149
+ end
150
+ end
151
+
152
+ describe 'with aws_reduced_redundancy enabled' do
153
+ before(:each) do
154
+ CloudTempfile.config = CloudTempfile::Config.new
155
+ CloudTempfile.config.aws_reduced_redundancy = true
156
+ end
157
+
158
+ it "config.aws_rrs? should be true" do
159
+ CloudTempfile.config.aws_rrs?.should be_true
160
+ end
161
+ end
162
+
163
+ describe 'with prefix set' do
164
+ before(:each) do
165
+ CloudTempfile.config = CloudTempfile::Config.new
166
+ CloudTempfile.config.prefix = "dev/tmp/"
167
+ end
168
+
169
+ it "config.prefix should be set" do
170
+ CloudTempfile.config.prefix.should == "dev/tmp/"
171
+ end
172
+ end
173
+
174
+ describe 'with public enabled' do
175
+ before(:each) do
176
+ CloudTempfile.config = CloudTempfile::Config.new
177
+ CloudTempfile.config.public = true
178
+ end
179
+
180
+ it "config.public? should be true" do
181
+ CloudTempfile.config.public?.should be_true
182
+ end
183
+ end
184
+
185
+ describe 'with clean_up enabled' do
186
+ before(:each) do
187
+ CloudTempfile.config = CloudTempfile::Config.new
188
+ CloudTempfile.config.clean_up = true
189
+ end
190
+
191
+ it "config.clean_up? should be true" do
192
+ CloudTempfile.config.clean_up?.should be_true
193
+ end
194
+ end
195
+
196
+ describe 'with invalid yml' do
197
+
198
+ before(:each) do
199
+ set_rails_root('with_invalid_yml')
200
+ CloudTempfile.config = CloudTempfile::Config.new
201
+ end
202
+
203
+ it "config should be invalid" do
204
+ CloudTempfile.config.valid?.should be_false
205
+ end
206
+ end
207
+
208
+ end
@@ -0,0 +1,48 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe CloudTempfile::MultiMime do
4
+
5
+ before(:each) do
6
+ Object.send(:remove_const, :Rails) if defined?(Rails)
7
+ Object.send(:remove_const, :Mime) if defined?(Mime)
8
+ Object.send(:remove_const, :Rack) if defined?(Rack)
9
+ end
10
+
11
+ after(:each) do
12
+ Object.send(:remove_const, :Rails) if defined?(Rails)
13
+ Object.send(:remove_const, :Mime) if defined?(Mime)
14
+ Object.send(:remove_const, :Rack) if defined?(Rack)
15
+ end
16
+
17
+ after(:all) do
18
+ require 'mime/types'
19
+ end
20
+
21
+ describe 'Mime::Type' do
22
+
23
+ it 'should detect mime type' do
24
+ #require 'rails'
25
+ #CloudTempfile::MultiMime.lookup('css').should == "text/css"
26
+ end
27
+
28
+ end
29
+
30
+ describe 'Rack::Mime' do
31
+
32
+ it 'should detect mime type' do
33
+ require 'rack/mime'
34
+ CloudTempfile::MultiMime.lookup('css').should == "text/css"
35
+ end
36
+
37
+ end
38
+
39
+ describe 'MIME::Types' do
40
+
41
+ it 'should detect mime type' do
42
+ require 'mime/types'
43
+ CloudTempfile::MultiMime.lookup('css').should == "text/css"
44
+ end
45
+
46
+ end
47
+
48
+ end
@@ -0,0 +1,50 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe CloudTempfile do
4
+ include_context "mock without Rails"
5
+
6
+ describe 'with initializer' do
7
+ before(:each) do
8
+ CloudTempfile.config = CloudTempfile::Config.new
9
+ CloudTempfile.configure do |config|
10
+ config.fog_provider = 'AWS'
11
+ config.aws_access_key_id = 'aaaa'
12
+ config.aws_secret_access_key = 'bbbb'
13
+ config.fog_directory = 'mybucket'
14
+ config.fog_region = 'eu-west-1'
15
+ config.public_path = Pathname("./public")
16
+ end
17
+ end
18
+
19
+ it "should have prefix of assets" do
20
+ CloudTempfile.config.public_path.to_s.should == "./public"
21
+ end
22
+
23
+ it "should default CloudTempfile to disabled" do
24
+ CloudTempfile.config.enabled?.should be_false
25
+ CloudTempfile.enabled?.should be_false
26
+ end
27
+
28
+ it "should configure provider as AWS" do
29
+ CloudTempfile.config.fog_provider.should == 'AWS'
30
+ CloudTempfile.config.should be_aws
31
+ end
32
+
33
+ it "should configure aws_access_key" do
34
+ CloudTempfile.config.aws_access_key_id.should == "aaaa"
35
+ end
36
+
37
+ it "should configure aws_secret_access_key" do
38
+ CloudTempfile.config.aws_secret_access_key.should == "bbbb"
39
+ end
40
+
41
+ it "should configure aws_access_key" do
42
+ CloudTempfile.config.fog_directory.should == "mybucket"
43
+ end
44
+
45
+ it "should configure fog_region" do
46
+ CloudTempfile.config.fog_region.should == "eu-west-1"
47
+ end
48
+
49
+ end
50
+ end