sinatra-s3 0.98 → 0.99

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 (45) hide show
  1. data/README +36 -18
  2. data/bin/sinatra-s3 +47 -15
  3. data/examples/wiki.rb +13 -13
  4. data/lib/sinatra-s3/admin.rb +1 -1
  5. data/lib/sinatra-s3/base.rb +1 -5
  6. data/lib/sinatra-s3/models/bit.rb +2 -2
  7. data/lib/sinatra-s3/s3.rb +11 -4
  8. data/public/js/wiki.js +35 -0
  9. data/s3.yml.example +6 -3
  10. metadata +63 -67
  11. data/examples/README +0 -9
  12. data/examples/wikicloth/MIT-LICENSE +0 -20
  13. data/examples/wikicloth/README +0 -81
  14. data/examples/wikicloth/Rakefile +0 -23
  15. data/examples/wikicloth/init.rb +0 -1
  16. data/examples/wikicloth/install.rb +0 -0
  17. data/examples/wikicloth/lib/core_ext.rb +0 -43
  18. data/examples/wikicloth/lib/wiki_buffer.rb +0 -279
  19. data/examples/wikicloth/lib/wiki_buffer/html_element.rb +0 -237
  20. data/examples/wikicloth/lib/wiki_buffer/link.rb +0 -70
  21. data/examples/wikicloth/lib/wiki_buffer/table.rb +0 -159
  22. data/examples/wikicloth/lib/wiki_buffer/var.rb +0 -77
  23. data/examples/wikicloth/lib/wiki_cloth.rb +0 -61
  24. data/examples/wikicloth/lib/wiki_link_handler.rb +0 -138
  25. data/examples/wikicloth/lib/wikicloth.rb +0 -5
  26. data/examples/wikicloth/run_tests.rb +0 -48
  27. data/examples/wikicloth/sample_documents/air_force_one.wiki +0 -170
  28. data/examples/wikicloth/sample_documents/cheatsheet.wiki +0 -205
  29. data/examples/wikicloth/sample_documents/default.css +0 -34
  30. data/examples/wikicloth/sample_documents/elements.wiki +0 -7
  31. data/examples/wikicloth/sample_documents/george_washington.wiki +0 -526
  32. data/examples/wikicloth/sample_documents/images.wiki +0 -15
  33. data/examples/wikicloth/sample_documents/lists.wiki +0 -421
  34. data/examples/wikicloth/sample_documents/pipe_trick.wiki +0 -68
  35. data/examples/wikicloth/sample_documents/random.wiki +0 -55
  36. data/examples/wikicloth/sample_documents/tv.wiki +0 -312
  37. data/examples/wikicloth/sample_documents/wiki.png +0 -0
  38. data/examples/wikicloth/sample_documents/wiki_tables.wiki +0 -410
  39. data/examples/wikicloth/tasks/wikicloth_tasks.rake +0 -0
  40. data/examples/wikicloth/test/test_helper.rb +0 -3
  41. data/examples/wikicloth/test/wiki_cloth_test.rb +0 -8
  42. data/examples/wikicloth/uninstall.rb +0 -0
  43. data/examples/wikicloth/wikicloth-0.1.3.gem +0 -0
  44. data/examples/wikicloth/wikicloth.gemspec +0 -69
  45. data/public/test.html +0 -8
data/README CHANGED
@@ -1,23 +1,41 @@
1
- An implementation of the S3 API in Sinatra. Most of the code was originaly taken from
2
- ParkPlace, another S3 clone written by _why.
1
+ Sinatra-S3 is an implementation of the Amazon S3 API. Based on the
2
+ Parkplace, written by _why, Sinatra-S3 has been extended to provide
3
+ additional support for ACLs, versioning and a bittorrent tracker.
3
4
 
4
- Requirements
5
- -------------------------------------------------------
5
+ Install
6
+ ------------------------------------------------------------------
6
7
 
7
- gem install sinatra haml aws-s3
8
+ To install or upgrade Sinatra-S3
8
9
 
9
- Optional Torrent Support
10
- -------------------------------------------------------
10
+ sudo gem install sinatra-s3
11
+ sinatra-s3 directory
12
+ cd directory
13
+ rake db:migrate
11
14
 
12
- If you are interested in using Sinatra-S3 as a Bittorrent tracker you will need a custom
13
- version of RubyTorrent found at http://github.com/nricciar/rubytorrent.
15
+ Or we could install from github (bleeding edge, may not work)
14
16
 
15
- Install
16
- -------------------------------------------------------
17
-
18
- 1) cp s3.yml.example s3.yml
19
- 2) edit s3.yml to suit your needs
20
- 3) rake db:migrate
21
- 4) rackup config.ru -p 6060
22
- 5) go to http://localhost:6060/control/ and login with the username admin and the
23
- password pass@word1
17
+ sudo gem install sinatra builder aws-s3
18
+ git clone git://github.com/nricciar/sinatra-s3.git
19
+ cd sinatra-s3/
20
+ cp s3.yml.example s3.yml
21
+ rake db:migrate
22
+
23
+ Optional Gems
24
+
25
+ ruby-git - Enable S3 versioning support.
26
+ rubytorrent* - Enable S3 torrent support.
27
+
28
+ * A custom version of rubytorrent is required to enable bittorrent
29
+ support. see http://github.com/nricciar/rubytorrent.
30
+
31
+ Setup
32
+ ------------------------------------------------------------------
33
+
34
+ Once Sinatra-S3 has been installed we can start our server and log in
35
+ with the default username admin and password pass@word1.
36
+
37
+ rackup config.ru -p 6060
38
+
39
+ Once running log in with the username admin and password pass@word1
40
+ via the control center at http://127.0.0.1:6060/control/. Make sure
41
+ to change your password!
data/bin/sinatra-s3 CHANGED
@@ -7,24 +7,56 @@ if ARGV.any? { |arg| %w(--version -v).any? { |flag| arg == flag } }
7
7
  exit 0
8
8
  end
9
9
 
10
- app_path = ARGV.last
11
- install_success = false
10
+ if ARGV.any? { |arg| %w(--help -h).any? { |flag| arg == flag } }
11
+ puts "sinatra-s3 [options] install_dir\n\n"
12
+ puts " --version -v Get version string"
13
+ puts " --help -h this"
14
+ puts " --include-wiki installs sinatra-s3 with wiki support"
15
+ exit 0
16
+ end
12
17
 
13
- unless File.exists?(app_path)
14
- FileUtils.mkdir_p(app_path)
18
+ $APP_PATH = ARGV.last
15
19
 
16
- config_ru = "require 'rubygems'\nrequire 'sinatra-s3'"
17
- if ARGV.any? { |arg| %w(--include-wiki --wiki).any? { |flag| arg == flag } }
18
- FileUtils.copy(File.join(S3::ROOT_DIR,"examples","wiki.rb"), File.join(app_path,"wiki.rb"))
19
- config_ru += "\nrequire 'wiki'"
20
+ def check_install(file,data)
21
+ file_path = File.join($APP_PATH, file)
22
+ if File.exists?(file_path)
23
+ if Digest::MD5.hexdigest(data) == Digest::MD5.hexdigest(File.read(file_path))
24
+ install_msg("identical",file)
25
+ else
26
+ if ['y','a',''].include?(verify_overwrite(file).downcase)
27
+ File.open(file_path,"w") { |f| f.write(data) }
28
+ install_msg("force",file)
29
+ else
30
+ install_msg("skip",file)
31
+ end
32
+ end
33
+ else
34
+ install_msg("create", file)
35
+ File.open(file_path,"w") { |f| f.write(data) }
20
36
  end
21
- config_ru += "\n\nuse S3::Tracker if defined?(RubyTorrent)\nuse S3::Admin\nrun S3::Application"
22
- File.open(File.join(app_path,"config.ru"),"w") { |f| f.write(config_ru) }
37
+ end
38
+ def install_msg(status, msg)
39
+ print status.rjust(10) + " #{msg}\n"
40
+ end
41
+ def verify_overwrite(file)
42
+ return 'a' if $SKIP_INSTALL_VERIFY
43
+
44
+ print "overwrite #{file} [Yna] "
45
+ resp = STDIN.gets.chomp
46
+ $SKIP_INSTALL_VERIFY = true if resp.downcase == "a"
23
47
 
24
- File.open(File.join(app_path,"Rakefile"),"w") { |f| f.write("require 'sinatra-s3/tasks'") }
25
- FileUtils.copy(File.join(S3::ROOT_DIR,"s3.yml.example"), File.join(app_path,"s3.yml"))
48
+ resp = verify_overwrite(file) unless ['y','n','a',''].include?(resp.downcase)
49
+ resp
50
+ end
26
51
 
27
- puts "Sinatra-S3 installed in #{app_path}."
28
- else
29
- puts "Unable to install Sinatra-S3. Install dir already exists."
52
+ FileUtils.mkdir_p($APP_PATH)
53
+ FileUtils.mkdir_p(File.join($APP_PATH, "public"))
54
+ config_ru = "require 'rubygems'\nrequire 'sinatra-s3'"
55
+ if ARGV.any? { |arg| %w(--include-wiki --wiki).any? { |flag| arg == flag } }
56
+ check_install("wiki.rb", File.read(File.join(S3::ROOT_DIR,"examples","wiki.rb")))
57
+ config_ru += "\nrequire 'wiki'"
30
58
  end
59
+ config_ru += "\n\nuse S3::Tracker if defined?(RubyTorrent)\nuse S3::Admin\nrun S3::Application"
60
+ check_install("config.ru", config_ru)
61
+ check_install("Rakefile", "require 'sinatra-s3/tasks'")
62
+ check_install("s3.yml", File.read(File.join(S3::ROOT_DIR,"s3.yml.example")))
data/examples/wiki.rb CHANGED
@@ -6,9 +6,7 @@ S3::Application.callback :mime_type => 'text/wiki' do
6
6
  if params.has_key?('edit')
7
7
  r :edit, "Editing #{@slot.name.gsub(/_/,' ')}"
8
8
  elsif params.has_key?('diff')
9
- @from = Bit.find_by_version(params[:diff])
10
- @to = Bit.find_by_version(params[:to])
11
- @diff = @from.diff(@to)
9
+ @diff = Bit.diff(params[:diff],params[:to])
12
10
  r :diff, "Changes to #{@slot.name.gsub(/_/,' ')}"
13
11
  elsif params.has_key?('history')
14
12
  @history = Slot.find(:all, :conditions => [ 'name = ? AND parent_id = ?', @slot.name, @slot.parent_id ], :order => "id DESC", :limit => 20)
@@ -116,10 +114,10 @@ __END__
116
114
  %html
117
115
  %head
118
116
  %title #{@title}
119
- %style{:type => "text/css"}
120
- @import '/control/s/css/control.css';
121
- %style{:type => "text/css"}
122
- @import '/control/s/css/wiki.css';
117
+ %style{:type => "text/css"} @import '/control/s/css/control.css';
118
+ %style{:type => "text/css"} @import '/control/s/css/wiki.css';
119
+ %script{ :type => "text/javascript", :language => "JavaScript", :src => "/control/s/js/prototype.js" }
120
+ %script{ :type => "text/javascript", :language => "JavaScript", :src => "/control/s/js/wiki.js" }
123
121
  %body
124
122
  %div#header
125
123
  %h1
@@ -167,7 +165,7 @@ __END__
167
165
 
168
166
  @@ edit
169
167
  %h2 #{@slot.nil? ? "Edit Page" : "Editing #{@slot.name.gsub(/_/,' ')}"}
170
- %form.create{ :method => "POST", :action => env['PATH_INFO'] }
168
+ %form#edit_page_form.create{ :method => "POST", :action => env['PATH_INFO'] }
171
169
  %input{ :type => "hidden", :name => "redirect", :value => env['PATH_INFO'] }
172
170
  %input{ :type => "hidden", :name => "Content-Type", :value => "text/wiki" }
173
171
  %div.required
@@ -185,14 +183,16 @@ __END__
185
183
  %table#revision_history
186
184
  - @history.each_with_index do |rev, count|
187
185
  %tr
188
- %td.check
189
- %input{ :type => "radio", :name => "diff", :value => rev.version }
190
- %td.check
191
- %input{ :type => "radio", :name => "to", :value => rev.version }
186
+ - if @history.length > 1
187
+ %td.check
188
+ %input.from{ :type => "radio", :name => "diff", :value => rev.version, :checked => (count == 1 ? true : false), :style => (count > 0 ? nil : "display:none") }
189
+ %td.check
190
+ %input.to{ :type => "radio", :name => "to", :value => rev.version, :checked => (count == 0 ? true : false) }
192
191
  %td
193
192
  %a{ :href => "#{env['PATH_INFO']}?version-id=#{rev.version}" } #{rev.meta['comment']}
194
193
  on #{rev.updated_at}
195
- %input{ :type => "submit", :value => "Compare Revisions" }
194
+ - if @history.length > 1
195
+ %input{ :type => "submit", :value => "Compare Revisions" }
196
196
 
197
197
  @@ wiki
198
198
  %div#wiki_page
@@ -22,7 +22,7 @@ module S3
22
22
  end
23
23
 
24
24
  get %r{^/control/s/(.*)} do
25
- open(File.join(PUBLIC_PATH, params[:captures].first))
25
+ open(File.join(ROOT_DIR, 'public', params[:captures].first))
26
26
  end
27
27
 
28
28
  get '/control/login' do
@@ -1,14 +1,10 @@
1
1
  module S3
2
2
 
3
- def self.config
4
- @config ||= YAML.load_file("s3.yml")[S3::Application.environment] rescue { :db => { :adapter => 'sqlite3', :database => "db/s3.db" } }
5
- end
6
-
7
3
  class Application < Sinatra::Base
8
4
 
9
5
  enable :static
10
6
  disable :raise_errors, :show_exceptions
11
- set :environment, :production
7
+ set :environment, S3_ENV
12
8
  set :public, PUBLIC_PATH
13
9
 
14
10
  helpers do
@@ -42,8 +42,8 @@ class Bit < ActiveRecord::Base
42
42
  end
43
43
 
44
44
  def self.diff(from,to)
45
- from = Bit.find_by_version(from)
46
- to = Bit.find_by_version(to)
45
+ from = Bit.find_by_version(from) if from.instance_of?(String)
46
+ to = Bit.find_by_version(to) if to.instance_of?(String)
47
47
  from.git_repository.diff(from.objectish, to.objectish)
48
48
  end
49
49
 
data/lib/sinatra-s3/s3.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
- require 'activerecord'
2
+ require 'active_record'
3
3
 
4
+ require 'fileutils'
4
5
  require 'sinatra/base'
5
6
  require 'openssl'
6
7
  require 'digest/sha1'
@@ -29,13 +30,19 @@ rescue LoadError
29
30
  end
30
31
 
31
32
  module S3
32
- VERSION = "0.98"
33
+ S3_ENV = :production
34
+
35
+ def self.config
36
+ @config ||= YAML.load_file("s3.yml")[S3_ENV] rescue { :db => { :adapter => 'sqlite3', :database => "db/s3.db" } }
37
+ end
38
+
39
+ VERSION = "0.99"
33
40
  DEFAULT_PASSWORD = 'pass@word1'
34
41
 
35
42
  BUFSIZE = (4 * 1024)
36
43
  ROOT_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
37
- PUBLIC_PATH = File.join(ROOT_DIR, 'public')
38
- STORAGE_PATH = File.expand_path('storage') unless defined?(STORAGE_PATH)
44
+ PUBLIC_PATH = File.expand_path(S3.config[:public_path] || File.join(ROOT_DIR, 'public'))
45
+ STORAGE_PATH = File.expand_path(S3.config[:storage_path] || 'storage') unless defined?(STORAGE_PATH)
39
46
  RESOURCE_TYPES = %w[acl versioning torrent]
40
47
  CANNED_ACLS = {
41
48
  'private' => 0600,
data/public/js/wiki.js ADDED
@@ -0,0 +1,35 @@
1
+ window.onload = function ()
2
+ {
3
+ if ($('revision_history') != null) {
4
+ update_rev_checkboxes();
5
+ $$('input.from').each(function (e) {
6
+ e.onchange = update_rev_checkboxes;
7
+ })
8
+ }
9
+ if ($('edit_page_form') != null) {
10
+ $('edit_page_form').onsubmit = submit_edit_page;
11
+ }
12
+ }
13
+ function submit_edit_page()
14
+ {
15
+ if ($('page_comment').value == '') {
16
+ alert('Please provide a comment describing the changes you made to the page.');
17
+ return false;
18
+ }
19
+ }
20
+ function update_rev_checkboxes()
21
+ {
22
+ hide_to = false;
23
+ rows = $$('#revision_history tr');
24
+ rows.each(function (e) {
25
+ f = e.getElementsBySelector('.from')[0]
26
+ t = e.getElementsBySelector('.to')[0]
27
+ if (f.checked == true)
28
+ hide_to = true;
29
+
30
+ if (hide_to == true)
31
+ t.style.display = 'none';
32
+ else
33
+ t.style.display = 'inline';
34
+ })
35
+ }
data/s3.yml.example CHANGED
@@ -1,17 +1,20 @@
1
1
  :development:
2
- :storage: storage
2
+ :public_path: public
3
+ :storage_path: storage
3
4
  :db:
4
5
  :database: db/development.db
5
6
  :adapter: sqlite3
6
7
 
7
8
  :test:
8
- :storage: test/storage
9
+ :public_path: public
10
+ :storage_path: test/storage
9
11
  :db:
10
12
  :database: db/test.db
11
13
  :adapter: sqlite3
12
14
 
13
15
  :production:
14
- :storage: storage
16
+ :public_path: public
17
+ :storage_path: storage
15
18
  :db:
16
19
  :database: db/production.db
17
20
  :adapter: sqlite3
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.98"
4
+ hash: 205
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 99
9
+ version: "0.99"
5
10
  platform: ruby
6
11
  authors:
7
12
  - David Ricciardi
@@ -9,39 +14,56 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-07-29 00:00:00 -04:00
17
+ date: 2010-07-30 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: sinatra
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 15
29
+ segments:
30
+ - 1
31
+ - 0
23
32
  version: "1.0"
24
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
25
35
  - !ruby/object:Gem::Dependency
26
36
  name: aws-s3
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
30
40
  requirements:
31
41
  - - ">="
32
42
  - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ - 6
47
+ - 2
33
48
  version: 0.6.2
34
- version:
49
+ type: :runtime
50
+ version_requirements: *id002
35
51
  - !ruby/object:Gem::Dependency
36
52
  name: haml
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
40
56
  requirements:
41
57
  - - ">="
42
58
  - !ruby/object:Gem::Version
59
+ hash: 25
60
+ segments:
61
+ - 2
62
+ - 2
63
+ - 15
43
64
  version: 2.2.15
44
- version:
65
+ type: :runtime
66
+ version_requirements: *id003
45
67
  description:
46
68
  email: nricciar@gmail.com
47
69
  executables:
@@ -52,76 +74,44 @@ extra_rdoc_files:
52
74
  - README
53
75
  files:
54
76
  - bin/sinatra-s3
77
+ - lib/sinatra-s3/admin.rb
55
78
  - lib/sinatra-s3/base.rb
56
79
  - lib/sinatra-s3/errors.rb
80
+ - lib/sinatra-s3/ext.rb
81
+ - lib/sinatra-s3/helpers/acp.rb
82
+ - lib/sinatra-s3/helpers/admin.rb
83
+ - lib/sinatra-s3/helpers/tracker.rb
84
+ - lib/sinatra-s3/helpers/versioning.rb
85
+ - lib/sinatra-s3/helpers.rb
57
86
  - lib/sinatra-s3/models/bit.rb
87
+ - lib/sinatra-s3/models/bucket.rb
88
+ - lib/sinatra-s3/models/file_info.rb
58
89
  - lib/sinatra-s3/models/git_bucket.rb
59
90
  - lib/sinatra-s3/models/slot.rb
91
+ - lib/sinatra-s3/models/torrent.rb
60
92
  - lib/sinatra-s3/models/torrent_peer.rb
61
- - lib/sinatra-s3/models/file_info.rb
62
93
  - lib/sinatra-s3/models/user.rb
63
- - lib/sinatra-s3/models/bucket.rb
64
- - lib/sinatra-s3/models/torrent.rb
65
- - lib/sinatra-s3/helpers.rb
94
+ - lib/sinatra-s3/s3.rb
66
95
  - lib/sinatra-s3/tasks.rb
67
- - lib/sinatra-s3/admin.rb
68
- - lib/sinatra-s3/ext.rb
69
96
  - lib/sinatra-s3/tracker.rb
70
- - lib/sinatra-s3/helpers/acp.rb
71
- - lib/sinatra-s3/helpers/admin.rb
72
- - lib/sinatra-s3/helpers/tracker.rb
73
- - lib/sinatra-s3/helpers/versioning.rb
74
- - lib/sinatra-s3/s3.rb
75
97
  - lib/sinatra-s3.rb
76
- - public/test.html
77
- - public/images/external-link.gif
78
- - public/css/wiki.css
79
98
  - public/css/control.css
99
+ - public/css/wiki.css
100
+ - public/images/external-link.gif
80
101
  - public/js/prototype.js
81
102
  - public/js/upload_status.js
82
- - examples/wiki.ru
103
+ - public/js/wiki.js
83
104
  - examples/wiki.rb
84
- - examples/README
85
- - examples/wikicloth/wikicloth-0.1.3.gem
86
- - examples/wikicloth/install.rb
87
- - examples/wikicloth/wikicloth.gemspec
88
- - examples/wikicloth/run_tests.rb
89
- - examples/wikicloth/README
90
- - examples/wikicloth/MIT-LICENSE
91
- - examples/wikicloth/sample_documents/george_washington.wiki
92
- - examples/wikicloth/sample_documents/pipe_trick.wiki
93
- - examples/wikicloth/sample_documents/default.css
94
- - examples/wikicloth/sample_documents/random.wiki
95
- - examples/wikicloth/sample_documents/tv.wiki
96
- - examples/wikicloth/sample_documents/air_force_one.wiki
97
- - examples/wikicloth/sample_documents/lists.wiki
98
- - examples/wikicloth/sample_documents/images.wiki
99
- - examples/wikicloth/sample_documents/elements.wiki
100
- - examples/wikicloth/sample_documents/wiki_tables.wiki
101
- - examples/wikicloth/sample_documents/wiki.png
102
- - examples/wikicloth/sample_documents/cheatsheet.wiki
103
- - examples/wikicloth/init.rb
104
- - examples/wikicloth/lib/wiki_buffer.rb
105
- - examples/wikicloth/lib/wikicloth.rb
106
- - examples/wikicloth/lib/wiki_cloth.rb
107
- - examples/wikicloth/lib/core_ext.rb
108
- - examples/wikicloth/lib/wiki_buffer/table.rb
109
- - examples/wikicloth/lib/wiki_buffer/html_element.rb
110
- - examples/wikicloth/lib/wiki_buffer/var.rb
111
- - examples/wikicloth/lib/wiki_buffer/link.rb
112
- - examples/wikicloth/lib/wiki_link_handler.rb
113
- - examples/wikicloth/tasks/wikicloth_tasks.rake
114
- - examples/wikicloth/uninstall.rb
115
- - examples/wikicloth/Rakefile
116
- - examples/wikicloth/test/wiki_cloth_test.rb
117
- - examples/wikicloth/test/test_helper.rb
105
+ - examples/wiki.ru
118
106
  - db/migrate/001_create_bits.rb
107
+ - db/migrate/002_create_users.rb
119
108
  - db/migrate/003_create_bits_users.rb
120
109
  - db/migrate/004_create_torrents.rb
121
- - db/migrate/002_create_users.rb
122
110
  - db/migrate/005_create_torrent_peers.rb
123
111
  - Rakefile
124
112
  - s3.yml.example
113
+ - test/s3api_test.rb
114
+ - test/test_helper.rb
125
115
  - README
126
116
  has_rdoc: true
127
117
  homepage: http://github.com/nricciar/sinatra-s3
@@ -133,21 +123,27 @@ rdoc_options: []
133
123
  require_paths:
134
124
  - lib
135
125
  required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
136
127
  requirements:
137
128
  - - ">="
138
129
  - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
139
133
  version: "0"
140
- version:
141
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
142
136
  requirements:
143
137
  - - ">="
144
138
  - !ruby/object:Gem::Version
139
+ hash: 3
140
+ segments:
141
+ - 0
145
142
  version: "0"
146
- version:
147
143
  requirements: []
148
144
 
149
145
  rubyforge_project:
150
- rubygems_version: 1.3.5
146
+ rubygems_version: 1.3.7
151
147
  signing_key:
152
148
  specification_version: 3
153
149
  summary: An implementation of the Amazon S3 API in Ruby