zimbatm-monkeypatch 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,5 +1,7 @@
1
1
  = MonkeyPatch
2
2
 
3
+ *WARNING: This is alpha code, the API is not stable yet.*
4
+
3
5
  <INSERT NICE INTRO HERE>
4
6
 
5
7
  Do you monkeys, patch ? If so, use this library, you won't regret it.
@@ -12,22 +14,30 @@
12
14
 
13
15
  </INSERT NICE INTRO HERE>
14
16
 
15
- == Usage
17
+ Authors:: [ zimbatm <zimbatm@oree.ch> ]
18
+
19
+ == Getting started
16
20
 
17
21
  Example usage:
18
22
 
19
23
  :include:example/patch_usage.rb
20
24
 
21
- == Related projects
25
+ Look at the MonkeyPatch module to get an idea of the API.
26
+
27
+ Once you have a patch object, look at the MonkeyPatch::Patch definition to know how to use it.
28
+
29
+ ----
30
+
31
+ ==== Related projects
22
32
 
23
33
  * http://github.com/coderrr/monkey_shield/ : provides sorts of namespaces to avoid patch collision
24
34
 
25
- == Ideas
35
+ ==== Ideas
26
36
 
27
37
  * method re-definition or module/class extension could be detected, especially when using Gems. The load-path is not the same between the original definition and the new-one.
28
38
  * load-path as namespace
29
39
 
30
- == TODO
40
+ ==== TODO
31
41
 
32
42
  * Add programmable patching conditions
33
43
  * Add reason string
@@ -1,16 +1,16 @@
1
1
  require 'monkeypatch'
2
2
 
3
3
  # Define a new extension that adds the #to_blob method
4
- date_patch = MonkeyPatch.add_method(:to_blob) do
4
+ blob_patch = MonkeyPatch.add_method(:to_blob) do
5
5
  def to_blob; "<blob>" end
6
6
  end
7
7
 
8
8
  x = "something"
9
- date_patch.patch_instance(x)
9
+ blob_patch.patch_instance(x)
10
10
  x.to_blob #=> "<blob>"
11
11
 
12
12
  # Define a patch, that replaces the #to_date method
13
- each_patch = MonkeyPatch.replace_method(:to_s) do
13
+ str_patch = MonkeyPatch.replace_method(:to_s) do
14
14
  def to_s; "..." end
15
15
  end
16
16
 
@@ -18,7 +18,8 @@ class ExampleClass
18
18
  def to_s; "hello" end
19
19
  end
20
20
 
21
- (date_patch & each_patch).patch_class(ExampleClass)
21
+ (blob_patch & str_patch).patch_class(ExampleClass)
22
22
 
23
23
  ExampleClass.new.to_s #=> "..."
24
24
  ExampleClass.new.to_blob #=> "<blob>"
25
+
data/lib/monkeypatch.rb CHANGED
@@ -7,7 +7,7 @@ Once you have a patch, look at Patch and it's children to see how to use it.
7
7
  =end
8
8
  module MonkeyPatch
9
9
  # MonkeyPatch's version as a string
10
- VERSION = '0.1.0'
10
+ VERSION = '0.1.1'
11
11
  # May be raised on check_conflicts
12
12
  class ConflictError < StandardError; end
13
13
 
data/task/gem.rake CHANGED
@@ -15,22 +15,23 @@ spec = Gem::Specification.new do |s|
15
15
  s.test_files = FileList['test/test*.rb']
16
16
  end
17
17
 
18
- file "ruby-monkeypatch.gemspec" do |t|
19
- File.open(t.name, 'w') do |f|
20
- f.write(spec.to_ruby)
21
- end
22
- end
23
-
24
18
  Rake::GemPackageTask.new(spec) do |pkg|
25
19
  # pkg.need_zip = true
26
20
  # pkg.need_tar = true
27
21
  end
22
+ task :gem => "gem:spec"
28
23
 
29
24
  namespace :gem do
30
- desc "Updates the ruby-monkeypatch.gemspec file"
25
+
26
+ spec_name = "ruby-monkeypatch.gemspec"
27
+ desc "Updates the #{spec_name} file if VERSION has changed"
31
28
  task :spec do
32
- File.open("ruby-monkeypatch.gemspec", 'w') do |f|
33
- f.write(spec.to_ruby)
29
+ if !File.exist?(spec_name) ||
30
+ eval(File.read(spec_name)).version.to_s != MonkeyPatch::VERSION
31
+ File.open(spec_name, 'w') do |f|
32
+ f.write(spec.to_ruby)
33
+ end
34
+ STDOUT.puts "*** Gem specification updated ***"
34
35
  end
35
36
  end
36
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zimbatm-monkeypatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - zimbatm