monkeysupport 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +58 -0
- data/Rakefile +5 -16
- data/VERSION +1 -1
- data/ext/monkeysupport_c/src/monkeysupport_c.c +0 -1
- data/ext/monkeysupport_output_safety/extconf.rb +5 -0
- data/ext/{output_safety_ext/output_safety_ext.c → monkeysupport_output_safety/monkeysupport_output_safety.c} +7 -8
- data/ext/monkeysupport_output_safety/src/monkeysupport_output_safety.c +91 -0
- data/lib/monkeysupport.rb +25 -7
- data/lib/monkeysupport/activesupport/inflector.rb +3 -2
- data/monkeysupport.gemspec +13 -14
- data/spec/output_safety_spec.rb +48 -0
- data/spec/spec_helper.rb +16 -0
- metadata +13 -14
- data/README.rdoc +0 -34
- data/ext/output_safety_ext/extconf.rb +0 -5
- data/test/monkeysupport_test.rb +0 -7
- data/test/test_helper.rb +0 -10
data/README.md
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
#MonkeySupport#
|
2
|
+
|
3
|
+
MonkeySupport is a collection of monkeypatches to Rails, replacing
|
4
|
+
existing methods with (somewhat) optimized C equivalents.
|
5
|
+
|
6
|
+
If this interests you, you should also check out methodmissing's
|
7
|
+
excellent HashWithIndifferentAccess at
|
8
|
+
http://github.com/methodmissing/hwia .
|
9
|
+
|
10
|
+
##Modules##
|
11
|
+
|
12
|
+
MonkeySupport is largely a bunch of modules, each overwriting a part
|
13
|
+
of ActiveSupport. By setting `$MonkeyModuleExcludes` to an array of
|
14
|
+
module names before loading MonkeySupport, those modules will not be
|
15
|
+
loaded. For example:
|
16
|
+
|
17
|
+
$MonkeyModuleExcludes = ["inflector", "output_safety"]
|
18
|
+
require 'monkeysupport'
|
19
|
+
|
20
|
+
You can also specify a whitelist of modules to load with
|
21
|
+
`$MonkeyModuleIncludes`, if you'd like. Typically, leaving both these
|
22
|
+
variables undefined is what you'll want, though.
|
23
|
+
|
24
|
+
MonkeySupport is currently comprised of the following modules:
|
25
|
+
|
26
|
+
* inflector
|
27
|
+
* output_safety
|
28
|
+
|
29
|
+
##Note on Patches/Pull Requests##
|
30
|
+
|
31
|
+
* Fork the project.
|
32
|
+
* Make your feature addition or bug fix.
|
33
|
+
* Add tests for it. This is important so I don't break it in a
|
34
|
+
future version unintentionally.
|
35
|
+
* Commit, do not mess with rakefile, version, or history.
|
36
|
+
(if you want to have your own version, that is fine but
|
37
|
+
bump version in a commit by itself I can ignore when I pull)
|
38
|
+
* Send me a pull request. Bonus points for topic branches.
|
39
|
+
|
40
|
+
##Testing##
|
41
|
+
|
42
|
+
There are some simple specs in `./spec`. To run against the
|
43
|
+
activesupport test suite, add `require 'monkeysupport'` below the
|
44
|
+
activesupport requires in activesupport's `Rakefile`. and rake away.
|
45
|
+
|
46
|
+
##Problems / TODO##
|
47
|
+
|
48
|
+
* Certain functions used to be memoized, then rails added test cases
|
49
|
+
for adding new inflections on the fly. The memoization is currently
|
50
|
+
disabled, but could be tweaked to be invalidated when the inflection
|
51
|
+
rules change.
|
52
|
+
* Need to do a better job of identifying ruby versions for
|
53
|
+
output_safety module.
|
54
|
+
* There's always more to port...
|
55
|
+
|
56
|
+
##Copyright##
|
57
|
+
|
58
|
+
Copyright (c) 2009 Burke Libbey. MIT License. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -6,30 +6,23 @@ begin
|
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "monkeysupport"
|
8
8
|
gem.summary = "Monkeypatching Rails with C since 2009"
|
9
|
-
gem.description = "MonkeySupport
|
9
|
+
gem.description = "MonkeySupport monkeypatches some of the performance-sink parts of rails with speedy C extensions."
|
10
10
|
gem.email = "burke@burkelibbey.org"
|
11
11
|
gem.homepage = "http://github.com/burke/monkeysupport"
|
12
12
|
gem.authors = ["Burke Libbey"]
|
13
|
-
gem.files.include '{
|
14
|
-
gem.extensions = ["ext/monkeysupport_c/extconf.rb", "ext/
|
13
|
+
gem.files.include '{spec,lib,ext}/**/*'
|
14
|
+
gem.extensions = ["ext/monkeysupport_c/extconf.rb", "ext/monkeysupport_output_safety/extconf.rb"]
|
15
15
|
gem.add_development_dependency "shoulda"
|
16
16
|
end
|
17
17
|
rescue LoadError
|
18
18
|
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
19
19
|
end
|
20
20
|
|
21
|
-
require 'rake/testtask'
|
22
|
-
Rake::TestTask.new(:test) do |test|
|
23
|
-
test.libs << 'lib' << 'test'
|
24
|
-
test.pattern = 'test/**/*_test.rb'
|
25
|
-
test.verbose = true
|
26
|
-
end
|
27
|
-
|
28
21
|
begin
|
29
22
|
require 'rcov/rcovtask'
|
30
23
|
Rcov::RcovTask.new do |test|
|
31
|
-
test.libs << '
|
32
|
-
test.pattern = '
|
24
|
+
test.libs << 'spec'
|
25
|
+
test.pattern = 'spec/**/*_spec.rb'
|
33
26
|
test.verbose = true
|
34
27
|
end
|
35
28
|
rescue LoadError
|
@@ -38,10 +31,6 @@ rescue LoadError
|
|
38
31
|
end
|
39
32
|
end
|
40
33
|
|
41
|
-
task :test => :check_dependencies
|
42
|
-
|
43
|
-
task :default => :test
|
44
|
-
|
45
34
|
require 'rake/rdoctask'
|
46
35
|
Rake::RDocTask.new do |rdoc|
|
47
36
|
if File.exist?('VERSION')
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
@@ -8,7 +8,6 @@ Init_monkeysupport_c()
|
|
8
8
|
VALUE mMonkeySupport = rb_define_module("MonkeySupport");
|
9
9
|
VALUE cMSC = rb_define_class_under(mMonkeySupport, "C", rb_cObject);
|
10
10
|
|
11
|
-
/* ActiveSupport::ASC.camelize("my_string") */
|
12
11
|
rb_define_singleton_method(cMSC, "activesupport_inflector_camelize", activesupport_inflector_camelize, 2);
|
13
12
|
rb_define_singleton_method(cMSC, "activesupport_inflector_demodulize", activesupport_inflector_demodulize, 1);
|
14
13
|
rb_define_singleton_method(cMSC, "activesupport_inflector_dasherize", activesupport_inflector_dasherize, 1);
|
@@ -1,13 +1,11 @@
|
|
1
|
-
#include
|
1
|
+
#include <stdbool.h>
|
2
2
|
|
3
3
|
#include "ruby.h"
|
4
|
-
#include "ruby/version.h"
|
5
4
|
|
6
5
|
// Use a FL_USER flag for storing html safety information.
|
7
6
|
// fingers crossed here, this is black black magic.
|
8
|
-
#ifdef FL_USER4
|
9
7
|
|
10
|
-
#define HFLAG
|
8
|
+
#define HFLAG FL_USER7
|
11
9
|
|
12
10
|
// by default, objects are not safe for html.
|
13
11
|
VALUE obj_html_safe_qmark(VALUE self) { return Qfalse; }
|
@@ -71,12 +69,14 @@ str_concat(VALUE self, VALUE other)
|
|
71
69
|
return self;
|
72
70
|
}
|
73
71
|
|
72
|
+
|
74
73
|
void
|
75
|
-
|
74
|
+
Init_monkeysupport_output_safety()
|
76
75
|
{
|
76
|
+
|
77
77
|
rb_define_method(rb_cObject, "html_safe?", obj_html_safe_qmark, 0);
|
78
78
|
rb_define_method(rb_cFixnum, "html_safe?", fix_html_safe_qmark, 0);
|
79
|
-
|
79
|
+
|
80
80
|
rb_define_method(rb_cString, "html_safe", str_html_safe, 0);
|
81
81
|
rb_define_method(rb_cString, "html_safe!", str_html_safe_bang, 0);
|
82
82
|
rb_define_method(rb_cString, "html_safe?", str_html_safe_qmark, 0);
|
@@ -84,6 +84,5 @@ Init_output_safety_ext()
|
|
84
84
|
|
85
85
|
rb_define_method(rb_cString, "+", str_plus, 1);
|
86
86
|
rb_define_method(rb_cString, "<<", str_concat, 1);
|
87
|
-
}
|
88
87
|
|
89
|
-
|
88
|
+
}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#include "ruby.h"
|
2
|
+
|
3
|
+
// Use a FL_USER flag for storing html safety information.
|
4
|
+
// fingers crossed here, this is black black magic.
|
5
|
+
//#ifdef FL_USER4
|
6
|
+
|
7
|
+
/*
|
8
|
+
|
9
|
+
//#define HFLAG FL_USER4
|
10
|
+
|
11
|
+
// by default, objects are not safe for html.
|
12
|
+
VALUE obj_html_safe_qmark(VALUE self) { return Qfalse; }
|
13
|
+
|
14
|
+
//fixnums are always safe for html.
|
15
|
+
VALUE fix_html_safe_qmark(VALUE self) { return Qtrue; }
|
16
|
+
|
17
|
+
VALUE // mark a string as safe for html.
|
18
|
+
str_html_safe_bang(VALUE self)
|
19
|
+
{
|
20
|
+
FL_SET(self, HFLAG);
|
21
|
+
return self;
|
22
|
+
}
|
23
|
+
|
24
|
+
VALUE // is this string safe for html?
|
25
|
+
str_html_safe_qmark(VALUE self)
|
26
|
+
{
|
27
|
+
return FL_TEST(self, HFLAG) ? Qtrue : Qfalse;
|
28
|
+
}
|
29
|
+
|
30
|
+
void
|
31
|
+
set_html_safe(VALUE obj, bool val)
|
32
|
+
{
|
33
|
+
if (val) {
|
34
|
+
FL_SET(obj, HFLAG);
|
35
|
+
} else {
|
36
|
+
FL_UNSET(obj, HFLAG);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
VALUE // return a copy of this string, marked as safe for html.
|
42
|
+
str_html_safe(VALUE self)
|
43
|
+
{
|
44
|
+
VALUE other = rb_obj_dup(self);
|
45
|
+
return str_html_safe_bang(other);
|
46
|
+
}
|
47
|
+
|
48
|
+
VALUE
|
49
|
+
str_plus(VALUE self, VALUE other)
|
50
|
+
{
|
51
|
+
VALUE ret;
|
52
|
+
bool safe = ((str_html_safe_qmark(self) == Qtrue) &&
|
53
|
+
(str_html_safe_qmark(other) == Qtrue));
|
54
|
+
|
55
|
+
ret = rb_str_plus(self, other);
|
56
|
+
|
57
|
+
set_html_safe(ret, safe);
|
58
|
+
return ret;
|
59
|
+
}
|
60
|
+
|
61
|
+
VALUE
|
62
|
+
str_concat(VALUE self, VALUE other)
|
63
|
+
{
|
64
|
+
bool safe = ((str_html_safe_qmark(self) == Qtrue) &&
|
65
|
+
(str_html_safe_qmark(other) == Qtrue));
|
66
|
+
|
67
|
+
rb_str_concat(self, other);
|
68
|
+
|
69
|
+
set_html_safe(self, safe);
|
70
|
+
return self;
|
71
|
+
}
|
72
|
+
|
73
|
+
*/
|
74
|
+
|
75
|
+
void
|
76
|
+
Init_monkeysupport_output_safety()
|
77
|
+
{
|
78
|
+
|
79
|
+
/* rb_define_method(rb_cObject, "html_safe?", obj_html_safe_qmark, 0); */
|
80
|
+
/* rb_define_method(rb_cFixnum, "html_safe?", fix_html_safe_qmark, 0); */
|
81
|
+
|
82
|
+
/* rb_define_method(rb_cString, "html_safe", str_html_safe, 0); */
|
83
|
+
/* rb_define_method(rb_cString, "html_safe!", str_html_safe_bang, 0); */
|
84
|
+
/* rb_define_method(rb_cString, "html_safe?", str_html_safe_qmark, 0); */
|
85
|
+
/* rb_define_method(rb_cString, "_rails_html_safe", str_html_safe_qmark, 0); */
|
86
|
+
|
87
|
+
/* rb_define_method(rb_cString, "+", str_plus, 1); */
|
88
|
+
/* rb_define_method(rb_cString, "<<", str_concat, 1); */
|
89
|
+
}
|
90
|
+
|
91
|
+
//#endif
|
data/lib/monkeysupport.rb
CHANGED
@@ -1,12 +1,30 @@
|
|
1
|
-
require 'monkeysupport_c'
|
2
|
-
|
3
1
|
require 'monkeysupport/c_proxy'
|
4
2
|
require 'monkeysupport/memoizable'
|
5
3
|
|
6
|
-
require '
|
4
|
+
require 'monkeysupport_c'
|
5
|
+
|
6
|
+
module_loaders = {
|
7
|
+
"inflector" => lambda{
|
8
|
+
require 'monkeysupport/activesupport/inflector'
|
9
|
+
},
|
10
|
+
|
11
|
+
"output_safety" => lambda{
|
12
|
+
if ["1.8.7", "1.9.1"].include? RUBY_VERSION
|
13
|
+
require 'monkeysupport_output_safety'
|
14
|
+
else
|
15
|
+
puts "##MonkeySupport: output_safety module not supported by #{RUBY_VERSION}. Module not loaded."
|
16
|
+
end
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
modules = module_loaders.keys
|
21
|
+
if $MonkeyModuleIncludes
|
22
|
+
modules &= $MonkeyModuleIncludes # intersection
|
23
|
+
end
|
24
|
+
if $MonkeyModuleExcludes
|
25
|
+
modules -= $MonkeyModuleExcludes # difference
|
26
|
+
end
|
7
27
|
|
8
|
-
|
9
|
-
|
10
|
-
else
|
11
|
-
puts "** MonkeySupport: output_safety module was not designed to work with #{RUBY_VERSION}. Extension not loaded."
|
28
|
+
modules.each do |mdl|
|
29
|
+
module_loaders[mdl].call
|
12
30
|
end
|
@@ -3,8 +3,9 @@ module ActiveSupport
|
|
3
3
|
|
4
4
|
extend MonkeySupport::Memoizable
|
5
5
|
extend MonkeySupport::CProxy
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
# This breaks a test case in rails now :(
|
8
|
+
# monkey_memoize :pluralize, :singularize, :humanize
|
8
9
|
|
9
10
|
monkey_c_proxy(:camelize,
|
10
11
|
:activesupport_inflector_camelize,
|
data/monkeysupport.gemspec
CHANGED
@@ -5,42 +5,41 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{monkeysupport}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Burke Libbey"]
|
12
12
|
s.date = %q{2009-12-28}
|
13
|
-
s.description = %q{MonkeySupport
|
13
|
+
s.description = %q{MonkeySupport monkeypatches some of the performance-sink parts of rails with speedy C extensions.}
|
14
14
|
s.email = %q{burke@burkelibbey.org}
|
15
|
-
s.extensions = ["ext/monkeysupport_c/extconf.rb", "ext/
|
15
|
+
s.extensions = ["ext/monkeysupport_c/extconf.rb", "ext/monkeysupport_output_safety/extconf.rb"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE",
|
18
|
-
"README.
|
18
|
+
"README.md"
|
19
19
|
]
|
20
20
|
s.files = [
|
21
21
|
".document",
|
22
22
|
".gitignore",
|
23
23
|
"LICENSE",
|
24
|
-
"README.
|
24
|
+
"README.md",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"ext/monkeysupport_c/extconf.rb",
|
28
28
|
"ext/monkeysupport_c/src/activesupport_inflector.c",
|
29
29
|
"ext/monkeysupport_c/src/activesupport_inflector.h",
|
30
30
|
"ext/monkeysupport_c/src/monkeysupport_c.c",
|
31
|
-
"ext/
|
32
|
-
"ext/
|
33
|
-
"ext/
|
34
|
-
"ext/
|
35
|
-
"ext/output_safety_ext/output_safety_ext.o",
|
31
|
+
"ext/monkeysupport_output_safety/Makefile",
|
32
|
+
"ext/monkeysupport_output_safety/extconf.rb",
|
33
|
+
"ext/monkeysupport_output_safety/monkeysupport_output_safety.c",
|
34
|
+
"ext/monkeysupport_output_safety/src/monkeysupport_output_safety.c",
|
36
35
|
"lib/monkeysupport.rb",
|
37
36
|
"lib/monkeysupport/activesupport/inflector.rb",
|
38
37
|
"lib/monkeysupport/c_proxy.rb",
|
39
38
|
"lib/monkeysupport/lru_cache.rb",
|
40
39
|
"lib/monkeysupport/memoizable.rb",
|
41
40
|
"monkeysupport.gemspec",
|
42
|
-
"
|
43
|
-
"
|
41
|
+
"spec/output_safety_spec.rb",
|
42
|
+
"spec/spec_helper.rb"
|
44
43
|
]
|
45
44
|
s.homepage = %q{http://github.com/burke/monkeysupport}
|
46
45
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -48,8 +47,8 @@ Gem::Specification.new do |s|
|
|
48
47
|
s.rubygems_version = %q{1.3.5}
|
49
48
|
s.summary = %q{Monkeypatching Rails with C since 2009}
|
50
49
|
s.test_files = [
|
51
|
-
"
|
52
|
-
"
|
50
|
+
"spec/output_safety_spec.rb",
|
51
|
+
"spec/spec_helper.rb"
|
53
52
|
]
|
54
53
|
|
55
54
|
if s.respond_to? :specification_version then
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe String do
|
4
|
+
context "newly created" do
|
5
|
+
it "should not be html_safe" do
|
6
|
+
"foo bar baz".html_safe?.should be_false
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
context "not marked as html_safe" do
|
11
|
+
it "should be html_safe once marked as html_safe" do
|
12
|
+
"foo".html_safe.html_safe?.should be_true
|
13
|
+
end
|
14
|
+
it "should be equal to the same html_safe string" do
|
15
|
+
"foo".html_safe.should ==("foo")
|
16
|
+
end
|
17
|
+
it "should return the same string after calling html_safe!" do
|
18
|
+
foo = "bar"
|
19
|
+
bar = foo.html_safe!
|
20
|
+
foo.should equal(bar)
|
21
|
+
end
|
22
|
+
it "should be modified when html_safe! is called" do
|
23
|
+
foo = "bar"
|
24
|
+
foo.html_safe!
|
25
|
+
foo.html_safe?.should be_true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "marked as html_safe" do
|
30
|
+
it "should become html_unsafe when an unsafe string is concatenated to it" do
|
31
|
+
foo = "bar".html_safe
|
32
|
+
foo << "baz"
|
33
|
+
foo.html_safe?.should be_false
|
34
|
+
end
|
35
|
+
it "should remain html_safe when a safe string is concatenated to it" do
|
36
|
+
foo = "bar".html_safe
|
37
|
+
foo << "baz".html_safe
|
38
|
+
foo.html_safe?.should be_true
|
39
|
+
end
|
40
|
+
it "should return an unsafe string when added to an unsafe string" do
|
41
|
+
("foo".html_safe + "bar").html_safe?.should be_false
|
42
|
+
end
|
43
|
+
it "should return safe string when added to a safe string" do
|
44
|
+
("foo".html_safe + "bar".html_safe).html_safe?.should be_true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require File.join(File.dirname(__FILE__),'../lib/monkeysupport')
|
3
|
+
|
4
|
+
require 'spec/autorun'
|
5
|
+
|
6
|
+
# Requires supporting files with custom matchers and macros, etc,
|
7
|
+
# in ./support/ and its subdirectories.
|
8
|
+
#Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
+
|
10
|
+
Spec::Runner.configure do |config|
|
11
|
+
# config.use_transactional_fixtures = true
|
12
|
+
# config.use_instantiated_fixtures = false
|
13
|
+
# config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
|
14
|
+
|
15
|
+
|
16
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monkeysupport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Burke Libbey
|
@@ -22,40 +22,39 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
-
description: MonkeySupport
|
25
|
+
description: MonkeySupport monkeypatches some of the performance-sink parts of rails with speedy C extensions.
|
26
26
|
email: burke@burkelibbey.org
|
27
27
|
executables: []
|
28
28
|
|
29
29
|
extensions:
|
30
30
|
- ext/monkeysupport_c/extconf.rb
|
31
|
-
- ext/
|
31
|
+
- ext/monkeysupport_output_safety/extconf.rb
|
32
32
|
extra_rdoc_files:
|
33
33
|
- LICENSE
|
34
|
-
- README.
|
34
|
+
- README.md
|
35
35
|
files:
|
36
36
|
- .document
|
37
37
|
- .gitignore
|
38
38
|
- LICENSE
|
39
|
-
- README.
|
39
|
+
- README.md
|
40
40
|
- Rakefile
|
41
41
|
- VERSION
|
42
42
|
- ext/monkeysupport_c/extconf.rb
|
43
43
|
- ext/monkeysupport_c/src/activesupport_inflector.c
|
44
44
|
- ext/monkeysupport_c/src/activesupport_inflector.h
|
45
45
|
- ext/monkeysupport_c/src/monkeysupport_c.c
|
46
|
-
- ext/
|
47
|
-
- ext/
|
48
|
-
- ext/
|
49
|
-
- ext/
|
50
|
-
- ext/output_safety_ext/output_safety_ext.o
|
46
|
+
- ext/monkeysupport_output_safety/Makefile
|
47
|
+
- ext/monkeysupport_output_safety/extconf.rb
|
48
|
+
- ext/monkeysupport_output_safety/monkeysupport_output_safety.c
|
49
|
+
- ext/monkeysupport_output_safety/src/monkeysupport_output_safety.c
|
51
50
|
- lib/monkeysupport.rb
|
52
51
|
- lib/monkeysupport/activesupport/inflector.rb
|
53
52
|
- lib/monkeysupport/c_proxy.rb
|
54
53
|
- lib/monkeysupport/lru_cache.rb
|
55
54
|
- lib/monkeysupport/memoizable.rb
|
56
55
|
- monkeysupport.gemspec
|
57
|
-
-
|
58
|
-
-
|
56
|
+
- spec/output_safety_spec.rb
|
57
|
+
- spec/spec_helper.rb
|
59
58
|
has_rdoc: true
|
60
59
|
homepage: http://github.com/burke/monkeysupport
|
61
60
|
licenses: []
|
@@ -85,5 +84,5 @@ signing_key:
|
|
85
84
|
specification_version: 3
|
86
85
|
summary: Monkeypatching Rails with C since 2009
|
87
86
|
test_files:
|
88
|
-
-
|
89
|
-
-
|
87
|
+
- spec/output_safety_spec.rb
|
88
|
+
- spec/spec_helper.rb
|
data/README.rdoc
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
= MonkeySupport
|
2
|
-
|
3
|
-
MonkeySupport is a collection of monkeypatches to Rails, replacing
|
4
|
-
existing methods with (somewhat) optimized C equivalents.
|
5
|
-
|
6
|
-
If this interests you, you should also check out methodmissing's
|
7
|
-
excellent HashWithIndifferentAccess at
|
8
|
-
http://github.com/methodmissing/hwia .
|
9
|
-
|
10
|
-
== Note on Patches/Pull Requests
|
11
|
-
|
12
|
-
* Fork the project.
|
13
|
-
* Make your feature addition or bug fix.
|
14
|
-
* Add tests for it. This is important so I don't break it in a
|
15
|
-
future version unintentionally.
|
16
|
-
* Commit, do not mess with rakefile, version, or history.
|
17
|
-
(if you want to have your own version, that is fine but
|
18
|
-
bump version in a commit by itself I can ignore when I pull)
|
19
|
-
* Send me a pull request. Bonus points for topic branches.
|
20
|
-
|
21
|
-
== Problems / TODO
|
22
|
-
|
23
|
-
* I haven't figured out a simple way to get this running with the
|
24
|
-
rails test suite. That would be handy.
|
25
|
-
* Certain functions are memoized now, that rails doesn't memoize by
|
26
|
-
default. I've tried to choose carefully, but with unusual usage
|
27
|
-
patterns, this could cause memory issues. Simplest solution that
|
28
|
-
comes to my mind would be to use a simple LRU cache instead of a
|
29
|
-
plain hash.
|
30
|
-
* There's always more to port...
|
31
|
-
|
32
|
-
== Copyright
|
33
|
-
|
34
|
-
Copyright (c) 2009 Burke Libbey. See LICENSE for details.
|
data/test/monkeysupport_test.rb
DELETED
data/test/test_helper.rb
DELETED