prop 0.6.3 → 0.6.4

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 (7) hide show
  1. data/Rakefile +130 -34
  2. data/lib/prop.rb +2 -0
  3. data/prop.gemspec +73 -47
  4. metadata +47 -24
  5. data/.document +0 -5
  6. data/.gemtest +0 -0
  7. data/VERSION +0 -1
data/Rakefile CHANGED
@@ -1,24 +1,50 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
+ require 'date'
3
4
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "prop"
8
- gem.summary = %Q{Puts a cork in their requests}
9
- gem.description = %Q{A gem for implementing rate limiting}
10
- gem.email = "morten@zendesk.com"
11
- gem.homepage = "http://github.com/morten/prop"
12
- gem.authors = ["Morten Primdahl"]
13
- gem.add_development_dependency "shoulda", ">= 0"
14
- gem.add_development_dependency "mocha", ">= 0.9.8"
15
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
- end
17
- Jeweler::GemcutterTasks.new
18
- rescue LoadError
19
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
5
+ #############################################################################
6
+ #
7
+ # Helper functions
8
+ #
9
+ #############################################################################
10
+
11
+ def name
12
+ @name ||= Dir['*.gemspec'].first.split('.').first
13
+ end
14
+
15
+ def version
16
+ line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
17
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
18
+ end
19
+
20
+ def date
21
+ Date.today.to_s
20
22
  end
21
23
 
24
+ def rubyforge_project
25
+ name
26
+ end
27
+
28
+ def gemspec_file
29
+ "#{name}.gemspec"
30
+ end
31
+
32
+ def gem_file
33
+ "#{name}-#{version}.gem"
34
+ end
35
+
36
+ def replace_header(head, header_name)
37
+ head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
38
+ end
39
+
40
+ #############################################################################
41
+ #
42
+ # Standard tasks
43
+ #
44
+ #############################################################################
45
+
46
+ task :default => :test
47
+
22
48
  require 'rake/testtask'
23
49
  Rake::TestTask.new(:test) do |test|
24
50
  test.libs << 'lib' << 'test'
@@ -26,29 +52,99 @@ Rake::TestTask.new(:test) do |test|
26
52
  test.verbose = true
27
53
  end
28
54
 
29
- begin
30
- require 'rcov/rcovtask'
31
- Rcov::RcovTask.new do |test|
32
- test.libs << 'test'
33
- test.pattern = 'test/**/test_*.rb'
34
- test.verbose = true
35
- end
36
- rescue LoadError
37
- task :rcov do
38
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
39
- end
55
+ desc "Generate RCov test coverage and open in your browser"
56
+ task :coverage do
57
+ require 'rcov'
58
+ sh "rm -fr coverage"
59
+ sh "rcov test/test_*.rb"
60
+ sh "open coverage/index.html"
40
61
  end
41
62
 
42
- task :test => :check_dependencies
43
-
44
- task :default => :test
45
-
46
63
  require 'rake/rdoctask'
47
64
  Rake::RDocTask.new do |rdoc|
48
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
49
-
50
65
  rdoc.rdoc_dir = 'rdoc'
51
- rdoc.title = "prop #{version}"
66
+ rdoc.title = "#{name} #{version}"
52
67
  rdoc.rdoc_files.include('README*')
53
68
  rdoc.rdoc_files.include('lib/**/*.rb')
54
69
  end
70
+
71
+ desc "Open an irb session preloaded with this library"
72
+ task :console do
73
+ sh "irb -rubygems -r ./lib/#{name}.rb"
74
+ end
75
+
76
+ #############################################################################
77
+ #
78
+ # Custom tasks (add your own tasks here)
79
+ #
80
+ #############################################################################
81
+
82
+
83
+
84
+ #############################################################################
85
+ #
86
+ # Packaging tasks
87
+ #
88
+ #############################################################################
89
+
90
+ desc "Create tag v#{version} and build and push #{gem_file} to Rubygems"
91
+ task :release => :build do
92
+ unless `git branch` =~ /^\* master$/
93
+ puts "You must be on the master branch to release!"
94
+ exit!
95
+ end
96
+ sh "git commit --allow-empty -a -m 'Release #{version}'"
97
+ sh "git tag v#{version}"
98
+ sh "git push origin master"
99
+ sh "git push origin v#{version}"
100
+ sh "gem push pkg/#{name}-#{version}.gem"
101
+ end
102
+
103
+ desc "Build #{gem_file} into the pkg directory"
104
+ task :build => :gemspec do
105
+ sh "mkdir -p pkg"
106
+ sh "gem build #{gemspec_file}"
107
+ sh "mv #{gem_file} pkg"
108
+ end
109
+
110
+ desc "Generate #{gemspec_file}"
111
+ task :gemspec => :validate do
112
+ # read spec file and split out manifest section
113
+ spec = File.read(gemspec_file)
114
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
115
+
116
+ # replace name version and date
117
+ replace_header(head, :name)
118
+ replace_header(head, :version)
119
+ replace_header(head, :date)
120
+ #comment this out if your rubyforge_project has a different name
121
+ replace_header(head, :rubyforge_project)
122
+
123
+ # determine file list from git ls-files
124
+ files = `git ls-files`.
125
+ split("\n").
126
+ sort.
127
+ reject { |file| file =~ /^\./ }.
128
+ reject { |file| file =~ /^(rdoc|pkg)/ }.
129
+ map { |file| " #{file}" }.
130
+ join("\n")
131
+
132
+ # piece file back together and write
133
+ manifest = " s.files = %w[\n#{files}\n ]\n"
134
+ spec = [head, manifest, tail].join(" # = MANIFEST =\n")
135
+ File.open(gemspec_file, 'w') { |io| io.write(spec) }
136
+ puts "Updated #{gemspec_file}"
137
+ end
138
+
139
+ desc "Validate #{gemspec_file}"
140
+ task :validate do
141
+ libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
142
+ unless libfiles.empty?
143
+ puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
144
+ exit!
145
+ end
146
+ unless Dir['VERSION*'].empty?
147
+ puts "A `VERSION` file at root level violates Gem best practices."
148
+ exit!
149
+ end
150
+ end
@@ -7,6 +7,8 @@ class Object
7
7
  end
8
8
 
9
9
  class Prop
10
+ VERSION = "0.6.4"
11
+
10
12
  class RateLimitExceededError < RuntimeError
11
13
  attr_accessor :handle, :retry_after, :description
12
14
 
@@ -1,51 +1,77 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
1
+ ## This is the rakegem gemspec template. Make sure you read and understand
2
+ ## all of the comments. Some sections require modification, and others can
3
+ ## be deleted if you don't need them. Once you understand the contents of
4
+ ## this file, feel free to delete any comments that begin with two hash marks.
5
+ ## You can find comprehensive Gem::Specification documentation, at
6
+ ## http://docs.rubygems.org/read/chapter/20
6
7
  Gem::Specification.new do |s|
7
- s.name = %q{prop}
8
- s.version = "0.6.3"
9
-
8
+ s.specification_version = 2 if s.respond_to? :specification_version=
10
9
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Morten Primdahl"]
12
- s.date = %q{2011-08-22}
13
- s.description = %q{A gem for implementing rate limiting}
14
- s.email = %q{morten@zendesk.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gemtest",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lib/prop.rb",
27
- "prop.gemspec",
28
- "test/helper.rb",
29
- "test/test_prop.rb"
10
+ s.rubygems_version = '1.3.5'
11
+
12
+ ## Leave these as is they will be modified for you by the rake gemspec task.
13
+ ## If your rubyforge_project name is different, then edit it and comment out
14
+ ## the sub! line in the Rakefile
15
+ s.name = 'prop'
16
+ s.version = '0.6.4'
17
+ s.date = '2011-11-30'
18
+ s.rubyforge_project = 'prop'
19
+
20
+ ## Make sure your summary is short. The description may be as long
21
+ ## as you like.
22
+ s.summary = "Gem for implementing rate limits."
23
+ s.description = "Gem for implementing rate limits."
24
+
25
+ ## List the primary authors. If there are a bunch of authors, it's probably
26
+ ## better to set the email to an email list or something. If you don't have
27
+ ## a custom homepage, consider using your GitHub URL or the like.
28
+ s.authors = ["Morten Primdahl"]
29
+ s.email = 'primdahl@me.com'
30
+ s.homepage = 'http://github.com/morten/prop'
31
+
32
+ ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
33
+ ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
34
+ s.require_paths = %w[lib]
35
+
36
+ ## This sections is only necessary if you have C extensions.
37
+ # s.require_paths << 'ext'
38
+ # s.extensions = %w[ext/extconf.rb]
39
+
40
+ ## If your gem includes any executables, list them here.
41
+ # s.executables = ["name"]
42
+
43
+ ## Specify any RDoc options here. You'll want to add your README and
44
+ ## LICENSE files to the extra_rdoc_files list.
45
+ s.rdoc_options = ["--charset=UTF-8"]
46
+ s.extra_rdoc_files = %w[README.rdoc LICENSE]
47
+
48
+ ## List your runtime dependencies here. Runtime dependencies are those
49
+ ## that are needed for an end user to actually USE your code.
50
+ # s.add_dependency('DEPNAME', [">= 1.1.0", "< 2.0.0"])
51
+
52
+ ## List your development dependencies here. Development dependencies are
53
+ ## those that are only needed during development
54
+ s.add_development_dependency('rake')
55
+ s.add_development_dependency('bundler')
56
+ s.add_development_dependency('shoulda')
57
+ s.add_development_dependency('mocha')
58
+
59
+ ## Leave this section as-is. It will be automatically generated from the
60
+ ## contents of your Git repository via the gemspec task. DO NOT REMOVE
61
+ ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
62
+ # = MANIFEST =
63
+ s.files = %w[
64
+ LICENSE
65
+ README.rdoc
66
+ Rakefile
67
+ lib/prop.rb
68
+ prop.gemspec
69
+ test/helper.rb
70
+ test/test_prop.rb
30
71
  ]
31
- s.homepage = %q{http://github.com/morten/prop}
32
- s.require_paths = ["lib"]
33
- s.rubygems_version = %q{1.6.2}
34
- s.summary = %q{Puts a cork in their requests}
35
-
36
- if s.respond_to? :specification_version then
37
- s.specification_version = 3
38
-
39
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
40
- s.add_development_dependency(%q<shoulda>, [">= 0"])
41
- s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
42
- else
43
- s.add_dependency(%q<shoulda>, [">= 0"])
44
- s.add_dependency(%q<mocha>, [">= 0.9.8"])
45
- end
46
- else
47
- s.add_dependency(%q<shoulda>, [">= 0"])
48
- s.add_dependency(%q<mocha>, [">= 0.9.8"])
49
- end
50
- end
72
+ # = MANIFEST =
51
73
 
74
+ ## Test files will be grabbed from the file list. Make sure the path glob
75
+ ## matches what you actually use.
76
+ s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
77
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prop
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 3
10
- version: 0.6.3
9
+ - 4
10
+ version: 0.6.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Morten Primdahl
@@ -15,11 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-22 00:00:00 -07:00
18
+ date: 2011-11-30 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: shoulda
22
+ name: rake
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
@@ -33,37 +33,60 @@ dependencies:
33
33
  type: :development
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- name: mocha
36
+ name: bundler
37
37
  prerelease: false
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- hash: 43
43
+ hash: 3
44
44
  segments:
45
45
  - 0
46
- - 9
47
- - 8
48
- version: 0.9.8
46
+ version: "0"
49
47
  type: :development
50
48
  version_requirements: *id002
51
- description: A gem for implementing rate limiting
52
- email: morten@zendesk.com
49
+ - !ruby/object:Gem::Dependency
50
+ name: shoulda
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: mocha
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ description: Gem for implementing rate limits.
78
+ email: primdahl@me.com
53
79
  executables: []
54
80
 
55
81
  extensions: []
56
82
 
57
83
  extra_rdoc_files:
58
- - LICENSE
59
84
  - README.rdoc
85
+ - LICENSE
60
86
  files:
61
- - .document
62
- - .gemtest
63
87
  - LICENSE
64
88
  - README.rdoc
65
89
  - Rakefile
66
- - VERSION
67
90
  - lib/prop.rb
68
91
  - prop.gemspec
69
92
  - test/helper.rb
@@ -73,8 +96,8 @@ homepage: http://github.com/morten/prop
73
96
  licenses: []
74
97
 
75
98
  post_install_message:
76
- rdoc_options: []
77
-
99
+ rdoc_options:
100
+ - --charset=UTF-8
78
101
  require_paths:
79
102
  - lib
80
103
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -97,10 +120,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
120
  version: "0"
98
121
  requirements: []
99
122
 
100
- rubyforge_project:
101
- rubygems_version: 1.6.2
123
+ rubyforge_project: prop
124
+ rubygems_version: 1.5.3
102
125
  signing_key:
103
- specification_version: 3
104
- summary: Puts a cork in their requests
105
- test_files: []
106
-
126
+ specification_version: 2
127
+ summary: Gem for implementing rate limits.
128
+ test_files:
129
+ - test/test_prop.rb
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gemtest DELETED
File without changes
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.6.3