dolzenko 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,53 @@
1
+ class Class
2
+ def acts_as(*args)
3
+ modules_with_options = []
4
+ for arg in args
5
+ if arg.is_a?(Module)
6
+ modules_with_options << [arg]
7
+ elsif arg.is_a?(Hash)
8
+ raise ArgumentError, "Options without module" unless modules_with_options[-1][0].is_a?(Module)
9
+ modules_with_options[-1][1] = arg
10
+ end
11
+ end
12
+
13
+ klass = self
14
+ for mod, options in modules_with_options
15
+ klass.send(:instance_exec, options, &mod::ClassContextProc) if defined?(mod::ClassContextProc)
16
+ klass.send(:include, mod::InstanceMethods) if defined?(mod::InstanceMethods)
17
+ klass.extend(mod::ClassMethods) if defined?(mod::ClassMethods)
18
+ end
19
+ end
20
+ end
21
+
22
+ module NeverTooDry
23
+ ClassContextProc = proc do |options|
24
+ attr_accessor :some_attr
25
+
26
+ class_eval <<-RUBY
27
+ def #{options[:meta_method_name]}; end
28
+ RUBY
29
+ end
30
+
31
+ module InstanceMethods
32
+ def instance_method; end
33
+ end
34
+
35
+ module ClassMethods
36
+ def class_method; end
37
+ end
38
+ end
39
+
40
+ module Dummy; end
41
+
42
+ class C
43
+ acts_as NeverTooDry, { :meta_method_name => "meta_method" },
44
+ Dummy
45
+ end
46
+
47
+
48
+ C.class_method
49
+
50
+ c = C.new
51
+ c.some_attr = 123
52
+ c.meta_method
53
+ c.instance_method
@@ -0,0 +1,17 @@
1
+ # *Correct* `alias_method_chain_once` implementation
2
+ class Module
3
+ def alias_method_chain_once(target, feature)
4
+ aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1
5
+ without_method = "#{aliased_target}_without_#{feature}#{punctuation}"
6
+
7
+ # `method_defined?` matches public and protected methods,
8
+ # also `*_method_defined?` family of methods is the portable
9
+ # way to check for method existence, while `public_methods.include?`
10
+ # will work either on 1.8 or 1.9 (depending on where symbol or string
11
+ # is provided as method name)
12
+ unless method_defined?(without_method) ||
13
+ private_method_defined?(without_method)
14
+ alias_method_chain(target, feature)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ require "net/http"
2
+
3
+ module Net
4
+ class HTTP < Protocol
5
+ private
6
+
7
+ def D(msg)
8
+ @debug_output ||= STDERR
9
+ @debug_output << msg
10
+ @debug_output << "\n"
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,4 @@
1
+ module Dolzenko
1
2
  module RemoteDownload
2
3
  # Returns IO object to be used with attachment_fu models, if retrieval fails - return nil
3
4
  def get_uploaded_data(url, follow_redirect = 2)
@@ -87,4 +88,5 @@ module RemoteDownload
87
88
 
88
89
  attr_accessor :content_type, :filename, :size, :original_filename
89
90
  end
91
+ end
90
92
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 11
9
- version: 0.0.11
8
+ - 12
9
+ version: 0.0.12
10
10
  platform: ruby
11
11
  authors:
12
12
  - Evgeniy Dolzhenko
@@ -56,10 +56,13 @@ extensions: []
56
56
  extra_rdoc_files: []
57
57
 
58
58
  files:
59
+ - lib/dolzenko/acts_as.rb
60
+ - lib/dolzenko/alias_method_chain_once.rb
59
61
  - lib/dolzenko/django_f_object.rb
60
62
  - lib/dolzenko/django_q_object.rb
61
63
  - lib/dolzenko/error_print.rb
62
64
  - lib/dolzenko/gist_readme.rb
65
+ - lib/dolzenko/global_net_http_debug.rb
63
66
  - lib/dolzenko/includable_with_options.rb
64
67
  - lib/dolzenko/io_interceptor.rb
65
68
  - lib/dolzenko/remote_download.rb