s3share 0.2 → 0.3
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.
- data/bin/s3.rb +1 -1
- data/lib/s3share/foo.diff +124 -0
- data/lib/s3share/runner.rb +2 -2
- data/lib/s3share/version.rb +1 -1
- metadata +4 -3
data/bin/s3.rb
CHANGED
@@ -0,0 +1,124 @@
|
|
1
|
+
commit 75686151a5525e3d8bbaeee9474f2312f9a2abe0
|
2
|
+
Author: Andrés Mejía <andmej@gmail.com>
|
3
|
+
Date: Sun Nov 28 23:06:05 2010 +0100
|
4
|
+
|
5
|
+
If the bucket you are trying to use doesn't exist yet, create it automatically.
|
6
|
+
|
7
|
+
diff --git a/README.markdown b/README.markdown
|
8
|
+
index 2fade33..39400f2 100644
|
9
|
+
--- a/README.markdown
|
10
|
+
+++ b/README.markdown
|
11
|
+
@@ -29,7 +29,7 @@ You'll need to set the three following ENV variables:
|
12
|
+
* `AMAZON_SECRET_ACCESS_KEY`: AWS secret access key.
|
13
|
+
* `AMAZON_S3_DEFAULT_BUCKET`: Name of the bucket where the uploads will be held.
|
14
|
+
|
15
|
+
-The last variable is visible in the URL returned to the user: `http://s3.amazonaws.com/{AMAZON_S3_DEFAULT_BUCKET}/some_photo.png`, so make sure you choose something pretty. This value is global for all the S3 namespace, meaning you need to find something unique between all the S3 users ("some-user-name_uploads" should do the trick).
|
16
|
+
+The last variable is visible in the URL returned to the user: `http://s3.amazonaws.com/{AMAZON_S3_DEFAULT_BUCKET}/some_photo.png`, so make sure you choose something pretty. This value is global for all the S3 namespace, meaning you need to find something unique between all the S3 users ("some-user-name_uploads" should do the trick). If the specified bucket doesn't exist, it will be automatically created.
|
17
|
+
|
18
|
+
You can set these variables in a `~/.amazon_keys` file:
|
19
|
+
|
20
|
+
diff --git a/lib/s3share/runner.rb b/lib/s3share/runner.rb
|
21
|
+
index e0c5dc7..e9cb328 100644
|
22
|
+
--- a/lib/s3share/runner.rb
|
23
|
+
+++ b/lib/s3share/runner.rb
|
24
|
+
@@ -60,6 +60,8 @@ module S3Share
|
25
|
+
:access_key_id => access_key,
|
26
|
+
:secret_access_key => secret_key
|
27
|
+
)
|
28
|
+
+
|
29
|
+
+ create_bucket_if_it_does_not_exist(bucket_name)
|
30
|
+
|
31
|
+
AWS::S3::S3Object.store(@filename, open("#{@path}/#{@filename}"),
|
32
|
+
bucket_name,
|
33
|
+
@@ -100,5 +102,14 @@ module S3Share
|
34
|
+
}
|
35
|
+
errors[err].each { |msg| puts msg }
|
36
|
+
end
|
37
|
+
+
|
38
|
+
+ private
|
39
|
+
+ # Check if the bucket exists and create it if it doesn't.
|
40
|
+
+ def create_bucket_if_it_does_not_exist(bucket_name)
|
41
|
+
+ AWS::S3::Bucket.find(bucket_name)
|
42
|
+
+ rescue AWS::S3::NoSuchBucket => e
|
43
|
+
+ puts "Bucket '#{bucket_name}' does not exist. Creating it..."
|
44
|
+
+ AWS::S3::Bucket.create(bucket_name)
|
45
|
+
+ end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
diff --git a/spec/runner_spec.rb b/spec/runner_spec.rb
|
49
|
+
index cf28997..50d660d 100644
|
50
|
+
--- a/spec/runner_spec.rb
|
51
|
+
+++ b/spec/runner_spec.rb
|
52
|
+
@@ -6,9 +6,10 @@ describe S3Share::Runner do
|
53
|
+
S3Share::Runner.new(filename)
|
54
|
+
end
|
55
|
+
|
56
|
+
- let(:relative) { runner("something/spec.opts") }
|
57
|
+
- let(:absolute) { runner("/Users/someone/something/spec.opts") }
|
58
|
+
- let(:file) { runner("spec.opts") }
|
59
|
+
+ let(:relative) { runner("something/spec.opts") }
|
60
|
+
+ let(:absolute) { runner("/Users/someone/something/spec.opts") }
|
61
|
+
+ let(:file) { runner("spec.opts") }
|
62
|
+
+ let(:existing_file) { runner(__FILE__) }
|
63
|
+
|
64
|
+
describe "#get_directory" do
|
65
|
+
it "correctly expands a relative path" do
|
66
|
+
@@ -37,5 +38,31 @@ describe S3Share::Runner do
|
67
|
+
file.clean_filename.should == "spec.opts"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
+
|
71
|
+
+ describe "#upload_file" do
|
72
|
+
+ it "checks if the bucket exists before starting the upload" do
|
73
|
+
+ # Stub this method so we don't try a real upload.
|
74
|
+
+ AWS::S3::S3Object.stub!(:store).and_return(nil)
|
75
|
+
+
|
76
|
+
+ ENV["AMAZON_S3_DEFAULT_BUCKET"] = "an_imaginary_bucket"
|
77
|
+
+ existing_file.should_receive(:create_bucket_if_it_does_not_exist).with("an_imaginary_bucket").and_return(:nil)
|
78
|
+
+ silence_stream(STDOUT) { existing_file.upload_file }
|
79
|
+
+ end
|
80
|
+
+ end
|
81
|
+
+
|
82
|
+
+ describe "#create_bucket_if_it_does_not_exist" do
|
83
|
+
+ it "calls AWS::S3::Bucket.find to see if the bucket exists" do
|
84
|
+
+ AWS::S3::Bucket.should_receive(:find).with("the_bucket").and_return(nil)
|
85
|
+
+ existing_file.send :create_bucket_if_it_does_not_exist, "the_bucket"
|
86
|
+
+ end
|
87
|
+
+
|
88
|
+
+ it "calls AWS::S3::Bucket.create if the bucket doesn't exist" do
|
89
|
+
+ AWS::S3::Base.establish_connection!(:access_key_id => ENV["AMAZON_ACCESS_KEY_ID"], :secret_access_key => ENV["AMAZON_SECRET_ACCESS_KEY"])
|
90
|
+
+ AWS::S3::Bucket.should_receive(:create).with("an_imaginary_bucket_that_surely_does_not_exist").and_return(nil)
|
91
|
+
+ silence_stream(STDOUT) do
|
92
|
+
+ existing_file.send :create_bucket_if_it_does_not_exist, "an_imaginary_bucket_that_surely_does_not_exist"
|
93
|
+
+ end
|
94
|
+
+ end
|
95
|
+
+ end
|
96
|
+
end
|
97
|
+
|
98
|
+
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
|
99
|
+
index 205e799..c3946ff 100644
|
100
|
+
--- a/spec/spec_helper.rb
|
101
|
+
+++ b/spec/spec_helper.rb
|
102
|
+
@@ -1,5 +1,20 @@
|
103
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
104
|
+
|
105
|
+
-
|
106
|
+
require 'rspec'
|
107
|
+
require 's3share'
|
108
|
+
+
|
109
|
+
+# Silences any stream for the duration of the block.
|
110
|
+
+#
|
111
|
+
+# silence_stream(STDOUT) do
|
112
|
+
+# puts 'This will never be seen'
|
113
|
+
+# end
|
114
|
+
+#
|
115
|
+
+# puts 'But this will'
|
116
|
+
+def silence_stream(stream)
|
117
|
+
+ old_stream = stream.dup
|
118
|
+
+ stream.reopen('/dev/null')
|
119
|
+
+ stream.sync = true
|
120
|
+
+ yield
|
121
|
+
+ensure
|
122
|
+
+ stream.reopen(old_stream)
|
123
|
+
+end
|
124
|
+
|
data/lib/s3share/runner.rb
CHANGED
@@ -60,7 +60,7 @@ module S3Share
|
|
60
60
|
:access_key_id => access_key,
|
61
61
|
:secret_access_key => secret_key
|
62
62
|
)
|
63
|
-
|
63
|
+
|
64
64
|
create_bucket_if_it_does_not_exist(bucket_name)
|
65
65
|
|
66
66
|
AWS::S3::S3Object.store(@filename, open("#{@path}/#{@filename}"),
|
@@ -102,7 +102,7 @@ module S3Share
|
|
102
102
|
}
|
103
103
|
errors[err].each { |msg| puts msg }
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
private
|
107
107
|
# Check if the bucket exists and create it if it doesn't.
|
108
108
|
def create_bucket_if_it_does_not_exist(bucket_name)
|
data/lib/s3share/version.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3share
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 3
|
9
|
+
version: "0.3"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Federico Builes
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- Rakefile
|
66
66
|
- LICENSE
|
67
67
|
- lib/s3share/args.rb
|
68
|
+
- lib/s3share/foo.diff
|
68
69
|
- lib/s3share/runner.rb
|
69
70
|
- lib/s3share/version.rb
|
70
71
|
- lib/s3share.rb
|