vex 0.4.4 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ coverage
2
+ test.sqlite3*
3
+ *.pid
4
+ *.lck
5
+ pkg
6
+ test/tmp/*
7
+ test/log
8
+ *.gemspec
9
+
10
+
data/Manifest CHANGED
@@ -0,0 +1,105 @@
1
+ CHANGELOG
2
+ Manifest
3
+ NOTICE.txt
4
+ Rakefile
5
+ VERSION
6
+ config/README
7
+ config/dependencies.rb
8
+ config/gem.yml
9
+ init.rb
10
+ lib/nokogiri/nokogiri_ext.rb
11
+ lib/vex.rb
12
+ lib/vex/action_controller.rb
13
+ lib/vex/action_controller/error.rb
14
+ lib/vex/action_controller/output_logging.rb
15
+ lib/vex/action_controller/partial_helper.rb
16
+ lib/vex/action_controller/verify_action.rb
17
+ lib/vex/action_controller/verify_hostname.rb
18
+ lib/vex/action_controller/whitelisted_actions.rb
19
+ lib/vex/active_record.rb
20
+ lib/vex/active_record/__init__.rb
21
+ lib/vex/active_record/advisory_lock.rb
22
+ lib/vex/active_record/advisory_lock/mysql_adapter.rb
23
+ lib/vex/active_record/advisory_lock/sqlite_adapter.rb
24
+ lib/vex/active_record/belongs_to_many.rb
25
+ lib/vex/active_record/custom_validations.rb
26
+ lib/vex/active_record/find_by_extension.rb
27
+ lib/vex/active_record/gem.rb
28
+ lib/vex/active_record/lite_table.rb
29
+ lib/vex/active_record/lite_view.rb
30
+ lib/vex/active_record/mass_load.rb
31
+ lib/vex/active_record/mysql_backup.rb
32
+ lib/vex/active_record/plugins/default_value_for/LICENSE.TXT
33
+ lib/vex/active_record/plugins/default_value_for/README.rdoc
34
+ lib/vex/active_record/plugins/default_value_for/Rakefile
35
+ lib/vex/active_record/plugins/default_value_for/init.rb
36
+ lib/vex/active_record/plugins/default_value_for/test.rb
37
+ lib/vex/active_record/random_id.rb
38
+ lib/vex/active_record/resolver.rb
39
+ lib/vex/active_record/serialize_hash.rb
40
+ lib/vex/active_record/to_html.rb
41
+ lib/vex/active_record/validate.rb
42
+ lib/vex/active_record/validation_error_ext.rb
43
+ lib/vex/base.rb
44
+ lib/vex/base/app.rb
45
+ lib/vex/base/argv.rb
46
+ lib/vex/base/array/at_random.rb
47
+ lib/vex/base/array/avg.rb
48
+ lib/vex/base/array/cross.rb
49
+ lib/vex/base/array/each_batch.rb
50
+ lib/vex/base/array/parallel_map.rb
51
+ lib/vex/base/deprecation.rb
52
+ lib/vex/base/enumerable/deep.rb
53
+ lib/vex/base/enumerable/enumerable_ext.rb
54
+ lib/vex/base/enumerable/progress.rb
55
+ lib/vex/base/filesystem/fast_copy.rb
56
+ lib/vex/base/filesystem/grep.rb
57
+ lib/vex/base/filesystem/lock.rb
58
+ lib/vex/base/filesystem/lock.rb.test.lck
59
+ lib/vex/base/filesystem/lock.rb.test.pid
60
+ lib/vex/base/filesystem/make_dirs.rb
61
+ lib/vex/base/filesystem/parse_filename.rb
62
+ lib/vex/base/filesystem/tmp_file.rb
63
+ lib/vex/base/filesystem/write.rb
64
+ lib/vex/base/hash/compact.rb
65
+ lib/vex/base/hash/cross.rb
66
+ lib/vex/base/hash/ensure_keys.rb
67
+ lib/vex/base/hash/extract.rb
68
+ lib/vex/base/hash/extras.rb
69
+ lib/vex/base/hash/inspect.rb
70
+ lib/vex/base/hash/slop.rb
71
+ lib/vex/base/invalid_argument/invalid_argument.rb
72
+ lib/vex/base/local_conf.rb
73
+ lib/vex/base/net/http_ext.rb
74
+ lib/vex/base/net/socket_ext.rb
75
+ lib/vex/base/object/in.rb
76
+ lib/vex/base/object/insp.rb
77
+ lib/vex/base/object/multiple_attributes.rb
78
+ lib/vex/base/object/singleton_methods.rb
79
+ lib/vex/base/object/with_benchmark.rb
80
+ lib/vex/base/range_array.rb
81
+ lib/vex/base/range_ext.rb
82
+ lib/vex/base/safe_token.rb
83
+ lib/vex/base/string/iconvert.rb
84
+ lib/vex/base/string/string_ext.rb
85
+ lib/vex/base/system.rb
86
+ lib/vex/base/thread/deferred.rb
87
+ lib/vex/base/thread/sleep.rb
88
+ lib/vex/base/time/date_ext.rb
89
+ lib/vex/boot.rb
90
+ lib/vex/boot/array.rb
91
+ lib/vex/boot/blank.rb
92
+ lib/vex/boot/string.rb
93
+ migration/create_request_log.rb
94
+ script/console
95
+ script/rebuild
96
+ tasks/echoe.rake
97
+ tasks/validate_db.rake
98
+ test/ar.rb
99
+ test/auto.rb
100
+ test/base-tests/local_conf.rb
101
+ test/base.rb
102
+ test/boot.rb
103
+ test/config/local.defaults.yml
104
+ test/config/local.yml
105
+ test/test_helper.rb
data/Rakefile CHANGED
@@ -46,8 +46,8 @@ task :manifest do
46
46
  sh "rake -f tasks/echoe.rake manifest"
47
47
  end
48
48
 
49
- SKIP_ECHOE=true
50
-
51
49
  Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each do |ext|
52
50
  load ext
53
51
  end
52
+
53
+ load "#{File.dirname(__FILE__)}/vex/gem.rake"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.4
1
+ 0.4.7
data/gem.yml ADDED
@@ -0,0 +1,13 @@
1
+ name: "vex"
2
+ version: "0.6.2"
3
+ summary: "Vex: some ruby extensions"
4
+ description: "Vex: some ruby extensions"
5
+ homepage: http://github.com/pboy/vex
6
+ author: pboy
7
+ email: eno-pboy@open-lab.org
8
+ dependencies:
9
+ - etest
10
+ - nokogiri
11
+ - sanitize
12
+ - htmlentities
13
+ - json
@@ -20,6 +20,14 @@ module ActionController::Error
20
20
  base.rescue_from ActionController::UnknownAction, :with => :rescue_404
21
21
  end
22
22
 
23
+ def to_s
24
+ "#{super}: #{@text}"
25
+ end
26
+
27
+ def inspect
28
+ "#{super}: #{@text.inspect}"
29
+ end
30
+
23
31
  private
24
32
 
25
33
  def rescue_404
@@ -1,4 +1,12 @@
1
1
  module ActionController::PartialHelper
2
+ def self.disable_localite
3
+ @no_localite = true
4
+ end
5
+
6
+ def self.localite?
7
+ defined?(Localite) && !@no_localite
8
+ end
9
+
2
10
  def partial_for(name)
3
11
  case name
4
12
  when String then name
@@ -32,25 +40,9 @@ module ActionController::PartialHelper
32
40
  opts[:collection] = locals[:collection]
33
41
  end
34
42
 
35
- #
36
- # set up localite??
37
- if defined?(Localite) && !(scope = File.basename(partial).gsub(/\..*/, "")).blank?
38
- Localite.scope(scope) do
39
- render_vex_partial(opts)
40
- end
41
- else
42
- render_vex_partial(opts)
43
- end
43
+ render_vex_partial(opts)
44
44
  end
45
45
 
46
- def render_vex_partial(opts)
47
- if self.is_a?(ActionController::Base)
48
- render_to_string(opts)
49
- else
50
- render(opts)
51
- end
52
- end
53
-
54
46
  def partial?(*args)
55
47
  partial *args
56
48
  rescue ActionView::MissingTemplate
@@ -20,11 +20,15 @@ class ActionController::Base
20
20
  return
21
21
  end
22
22
 
23
- error 404, <<-TEXT
23
+
24
+ msg = <<-TEXT
24
25
  No such action exists: #{controller_name}##{action_name}.
25
26
  Note: this application uses the whitelisted_actions plugin,
26
27
  you might have to use the 'actions' method to whitelist your actions.
27
28
  TEXT
29
+
30
+ logger.warn msg
31
+ error 404, msg
28
32
  end
29
33
  end
30
34
 
@@ -0,0 +1,4 @@
1
+ module ActiveRecord::Extension
2
+ end
3
+
4
+ load "#{File.dirname(__FILE__)}/lite_table.rb"
@@ -0,0 +1,61 @@
1
+ module ActiveRecord::Extension::CachedColumn
2
+ DEFAULTS = {
3
+ :time_to_live => 5.minutes
4
+ }
5
+
6
+ def self.included(klass)
7
+ klass.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ #
12
+ # cached_column :name, :time_to_live => 5.minutes
13
+ def cached_column(name, options = ActiveRecord::Extension::CachedColumn::DEFAULTS, &block)
14
+ #
15
+ # create the "#{name}_updated_at_column"
16
+ lite_table do
17
+ datetime "#{name}_updated_at"
18
+ end
19
+
20
+ define_method(name) do
21
+ read_cached_column(name, options, Proc.new)
22
+ end
23
+
24
+ define_method("#{name}!") do
25
+ write_attribute "#{name}_updated_at", nil
26
+ self.send name
27
+ end
28
+
29
+ define_method("#{name}=") do |v|
30
+ write_cached_column(name, v)
31
+ end
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def write_cached_column(name, value)
38
+ write_attribute name, value
39
+ write_attribute "#{name}_updated_at", Time.now
40
+ end
41
+
42
+ def read_cached_column(name, options, proc)
43
+ updated_at = self.send("#{name}_updated_at")
44
+ r = if updated_at && updated_at + options[:time_to_live] > Time.now
45
+ read_attribute(name)
46
+ else
47
+ value = if proc.arity <= 0 then proc.bind(self).call
48
+ elsif proc.arity == 1 then proc.call(self)
49
+ else raise "Unsupported # of block parameters"
50
+ end
51
+
52
+ update_attributes! name => value
53
+ value
54
+ end
55
+
56
+ r = r.slop if r.respond_to?(:slop)
57
+ r
58
+ end
59
+ end
60
+
61
+ ActiveRecord::Base.send :include, ActiveRecord::Extension::CachedColumn
@@ -0,0 +1,86 @@
1
+ module ActiveRecord::Extension::CachedColumn::Etest
2
+ def setup
3
+ require "timecop"
4
+ end
5
+
6
+ class X < ActiveRecord::Base
7
+ lite_table do
8
+ string :something
9
+ string :bigger
10
+ string :bigger_w_param
11
+ end
12
+
13
+ cached_column :something do
14
+ $something = $something + 1
15
+ "something-big"
16
+ end
17
+
18
+ cached_column :bigger, :time_to_live => 1.day do
19
+ $something = $something + 1
20
+ "something-bigger"
21
+ end
22
+
23
+ cached_column :bigger_w_param do |rec|
24
+ rec.class.name
25
+ end
26
+ end
27
+
28
+ def test_something
29
+ $something = 0
30
+ x = X.create!
31
+ assert_equal(0, $something)
32
+ assert_equal("something-big", x.something)
33
+ assert_equal(1, $something)
34
+ assert_equal("something-big", x.something)
35
+ assert_equal(1, $something)
36
+
37
+ Timecop.travel(360.seconds) do
38
+ assert_equal(1, $something)
39
+ assert_equal("something-big", x.something)
40
+ assert_equal(2, $something)
41
+ end
42
+ end
43
+
44
+ def test_w_new_record
45
+ $something = 0
46
+ x = X.new
47
+ assert_equal(0, $something)
48
+ assert_equal("something-big", x.something)
49
+ assert_equal(1, $something)
50
+ assert_equal("something-big", x.something)
51
+ assert_equal(1, $something)
52
+
53
+ Timecop.travel(360.seconds) do
54
+ assert_equal(1, $something)
55
+ assert_equal("something-big", x.something)
56
+ assert_equal(2, $something)
57
+ end
58
+ end
59
+
60
+ def test_time_to_live
61
+ $something = 0
62
+ x = X.create!
63
+ assert_equal(0, $something)
64
+ assert_equal("something-bigger", x.bigger)
65
+ assert_equal(1, $something)
66
+
67
+ Timecop.travel(Time.now + 6.minutes) do
68
+ assert_equal(1, $something)
69
+ assert_equal("something-bigger", x.bigger)
70
+ assert_equal(1, $something)
71
+ end
72
+
73
+ Timecop.travel(Time.now + 25.hours) do
74
+ assert_equal(1, $something)
75
+ assert_equal("something-bigger", x.bigger)
76
+ assert_equal(2, $something)
77
+ end
78
+ end
79
+
80
+
81
+ def test_bigger_w_params
82
+ $something = 0
83
+ x = X.create!
84
+ assert_equal("ActiveRecord::Extension::CachedColumn::Etest::X", x.bigger_w_param)
85
+ end
86
+ end
@@ -0,0 +1,7 @@
1
+ module ActiveRecord::Extension::Errors
2
+ def full_message
3
+ full_messages.join(", ")
4
+ end
5
+ end
6
+
7
+ ActiveRecord::Errors.send :include, ActiveRecord::Extension::Errors
@@ -11,19 +11,21 @@ module ActiveRecord::LiteTable
11
11
  end
12
12
 
13
13
  def column(name, type, opts = {})
14
- if !existing_column = klass.columns_hash[name.to_s]
15
- index_opt = opts.delete :index
16
- klass.connection.add_column(klass.table_name, name, type, opts)
17
- klass.reset_column_information
18
-
19
- index(name, :unique => (index == :unique)) if index_opt
20
- return
14
+ klass.silence do
15
+ if !existing_column = klass.columns_hash[name.to_s]
16
+ index_opt = opts.delete :index
17
+ klass.connection.add_column(klass.table_name, name, type, opts)
18
+ klass.reset_column_information
19
+
20
+ index(name, :unique => (index_opt == :unique)) if index_opt
21
+ return
22
+ end
23
+
24
+ return if existing_column.type == type
25
+
26
+ raise ColumnTypeMismatch,
27
+ "Column type mismatch on #{klass}##{name}: is #{existing_column.type}, but should be #{type}"
21
28
  end
22
-
23
- return if existing_column.type == type
24
-
25
- raise ColumnTypeMismatch,
26
- "Column type mismatch on #{klass}##{name}: is #{existing_column.type}, but should be #{type}"
27
29
  end
28
30
 
29
31
  def timestamps(*cols)
@@ -55,7 +57,9 @@ module ActiveRecord::LiteTable
55
57
 
56
58
  def index(column_name, options={})
57
59
  begin
58
- klass.connection.add_index klass.table_name, column_name, options
60
+ klass.silence do
61
+ klass.connection.add_index klass.table_name, column_name, options
62
+ end
59
63
  rescue
60
64
  # TODO: It would be *great* to have a unique exception type here!
61
65
  # But even in this case we have to check the options for identity!
@@ -0,0 +1,23 @@
1
+ module ActiveRecord::Extension::WithScope
2
+
3
+ def self.included(klass)
4
+ #
5
+ # add a custom scope.
6
+ klass.named_scope :with, lambda { |*args| ActiveRecord::Extension::WithScope.options(*args) }
7
+ end
8
+
9
+ def self.options(*args)
10
+ options = args.extract_options!
11
+ if options[:conditions] && !args.empty?
12
+ raise "Cannot have multiple condition entries"
13
+ end
14
+
15
+ unless args.empty?
16
+ options = { :conditions => args }.update(options)
17
+ end
18
+
19
+ options
20
+ end
21
+ end
22
+
23
+ ActiveRecord::Base.send :include, ActiveRecord::Extension::WithScope
@@ -0,0 +1,44 @@
1
+ require "cgi"
2
+
3
+ class CGI
4
+ def self.url_for(*args)
5
+ opts = case args.last
6
+ when Array, Hash then args.pop
7
+ else {}
8
+ end
9
+
10
+ url_base = args.map do |arg|
11
+ arg.gsub(/(^\/)|(\/$)/, "")
12
+ end.join("/")
13
+
14
+ return url_base if opts.empty?
15
+
16
+ url_base += url_base.index("?") ? "&" : "?"
17
+
18
+ url_base + opts.map do |k,v|
19
+ p = escape(k.to_s)
20
+ p += "=" + escape(v.to_s) if v
21
+ p
22
+ end.join("&")
23
+ end
24
+ end
25
+
26
+ module CGI::Etest
27
+ def test_url_for
28
+ assert_equal "http://ix.de", CGI.url_for("http://ix.de")
29
+ assert_equal "http://ix.de?a", CGI.url_for("http://ix.de", :a => nil)
30
+ assert_equal "http://ix.de?a", CGI.url_for("http://ix.de", [ :a ])
31
+ assert_equal "http://ix.de?a=1", CGI.url_for("http://ix.de", :a => 1 )
32
+ assert_equal "http://ix.de?a=1", CGI.url_for("http://ix.de", [ [ :a, 1 ]] )
33
+ assert_equal "http://ix.de?a=1&b=bb", CGI.url_for("http://ix.de", [ [ :a, 1 ], [ :b, :bb ]] )
34
+ assert_equal "http://ix.de?a=b%3D1", CGI.url_for("http://ix.de", :a => "b=1" )
35
+ end
36
+
37
+ def test_url_for_merging
38
+ assert_equal "http://ix.de/a/b", CGI.url_for("http://ix.de", "a", "b")
39
+ assert_equal "http://ix.de/a/b", CGI.url_for("http://ix.de/", "a/", "b")
40
+ assert_equal "http://ix.de/a/b", CGI.url_for("http://ix.de/", "/a/", "/b/")
41
+ assert_equal "http://ix.de//x/y", CGI.url_for("http://ix.de//", "/x/y")
42
+ assert_equal "http://ix.de//x///y", CGI.url_for("http://ix.de//", "/x///y")
43
+ end
44
+ end if VEX_TEST == "base"
@@ -35,7 +35,7 @@ class Hash
35
35
  # Return true if the entry exists and evaluates to false
36
36
  # Return the entry otherwise.
37
37
  key = lookup_sloppy_key($1)
38
- return false if !key?(key)
38
+ return nil if !key?(key)
39
39
  return (self[key] || true).slop!
40
40
  else
41
41
  # fetch the entry, if it exists, or raise an IndexError
@@ -78,6 +78,8 @@ end
78
78
  class Object
79
79
  def slop
80
80
  dup.slop!
81
+ rescue TypeError # e.g. "Can't dup NilClass"
82
+ self
81
83
  end
82
84
 
83
85
  def slop!
@@ -112,7 +114,7 @@ module Hash::Slop::Etest
112
114
  assert_equal true, h.a?
113
115
  assert_equal true, h.b?
114
116
  assert_equal 1, h.c?
115
- assert_equal false, h.d?
117
+ assert_equal nil, h.d?
116
118
 
117
119
  assert_equal nil, h.a
118
120
  assert_equal false, h.b
@@ -8,18 +8,13 @@ class LocalConf < Hash
8
8
  return if r1 || r2
9
9
 
10
10
  raise Errno::ENOENT,
11
- "Missing configuration file #{fullpath file.sub(/\.yml$/, "")}{.defaults}.yml}"
11
+ "Missing configuration file #{App.root}/config/#{file.sub(/\.yml$/, "")}{.defaults}.yml}"
12
12
  end
13
13
 
14
14
  private
15
15
 
16
- def fullpath(file)
17
- return file if file.starts_with?("/")
18
- "#{App.root}/config/#{file}"
19
- end
20
-
21
16
  def load(file)
22
- data = YAML::load_file(fullpath(file))
17
+ data = YAML::load_file("#{App.root}/config/#{file}")
23
18
 
24
19
  data.each { |k,v| update k.to_sym => v }
25
20
 
@@ -1,3 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ require "sanitize"
4
+ require "htmlentities"
5
+
1
6
  module StringExt
2
7
  def constantize?
3
8
  constantize
@@ -0,0 +1,17 @@
1
+ class Hash
2
+ alias :delete_single :delete
3
+
4
+ def delete_multi(a0, *extras, &block)
5
+ if extras.empty? || block_given?
6
+ delete_single a0, *extras, &block
7
+ else
8
+ r = [ delete_single(a0) ]
9
+ extras.each do |arg|
10
+ r.push delete_single(arg)
11
+ end
12
+ r
13
+ end
14
+ end
15
+
16
+ alias :delete :delete_multi
17
+ end
@@ -0,0 +1,36 @@
1
+ def sys(*args)
2
+ STDERR.puts "#{args.join(" ")}"
3
+ system *args
4
+ end
5
+
6
+ namespace :gem do
7
+ task :build => :spec do
8
+ options = []
9
+ sys "gem build .gemspec #{options.join(" ")} && mkdir -p pkg && mv *.gem pkg"
10
+ end
11
+
12
+ task :spec do
13
+ File.open ".gemspec", "w" do |file|
14
+ file.write <<-TXT
15
+ require "vex/gem"
16
+ Gem.spec File.dirname(__FILE__)
17
+ TXT
18
+ end
19
+ end
20
+
21
+ task :install => :build do
22
+ file = Dir.glob("pkg/*.gem").sort.last
23
+ sys "gem install #{file}"
24
+ end
25
+
26
+ task :push => :build do
27
+ file = Dir.glob("pkg/*.gem").sort.last
28
+ puts "To push the gem to gemcutter please run"
29
+ puts
30
+ puts "\tgem push #{file}"
31
+ end
32
+ end
33
+
34
+ desc "Build gem"
35
+ # task :gem => %w(test gem:install)
36
+ task :gem => %w(gem:install gem:push)
@@ -0,0 +1,95 @@
1
+ module Gem
2
+ (class << self; self; end).class_eval do
3
+ def default_attributes
4
+ %w(name version date files executables)
5
+ end
6
+
7
+ def set_root(root)
8
+ @root = File.expand_path(root)
9
+ @name = File.basename(@root)
10
+ @conf ||= YAML.load File.read("#{@root}/gem.yml")
11
+ @attributes ||= (default_attributes + @conf.keys.map(&:to_s)).uniq
12
+ end
13
+
14
+ # attr_reader :root, :conf, :attributes,
15
+ attr_reader :name
16
+
17
+ def attribute(name)
18
+ if @conf.key?(name) && !%w(dependencies).include?(name)
19
+ @conf[name]
20
+ else
21
+ self.send(name)
22
+ end
23
+ end
24
+
25
+ #
26
+ # create a new Gem::Specification object for this gem.
27
+ def spec(root)
28
+ self.set_root root
29
+
30
+ Gem::Specification.new do |s|
31
+ @attributes.each do |attr|
32
+ v = attribute(attr)
33
+ next if v.nil?
34
+
35
+ log attr, v
36
+
37
+ s.send attr + "=", v
38
+ end
39
+
40
+ %w(pre_uninstall post_install).each do |hook|
41
+ next unless File.exists?("#{root}/hooks/#{hook}.rb")
42
+ log hook, "yes"
43
+ Gem.send(hook) {
44
+ load "hooks/#{hook}.rb"
45
+ }
46
+ end
47
+ end
48
+ end
49
+
50
+ def log(attr, v)
51
+ v = case attr
52
+ when "files" then "#{v.length} files"
53
+ else v.inspect
54
+ end
55
+
56
+ STDERR.puts "#{"%20s" % attr}:\t#{v}"
57
+ end
58
+
59
+ def dependencies
60
+ return nil unless @conf["dependencies"]
61
+
62
+ @conf["dependencies"].map do |d|
63
+ Gem::Dependency.new d, ">= 0"
64
+ end
65
+ end
66
+
67
+ def head(file)
68
+ File.open(file) do |f|
69
+ f.readline
70
+ end
71
+ end
72
+
73
+ def executables
74
+ r = Dir.glob("#{@root}/bin/**/*").map do |file|
75
+ next unless head(file) =~ /^#!/
76
+ file[@root.length + 5 .. -1]
77
+ end.compact
78
+
79
+ return nil if r.empty?
80
+ r
81
+ end
82
+
83
+ #
84
+ # get files from git
85
+ def files
86
+ r = `git ls-files`.split("\n")
87
+ end
88
+
89
+ #
90
+ # return the date
91
+ def date
92
+ Date.today.to_s
93
+ end
94
+ end
95
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vex
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease: false
4
+ hash: 3
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 4
9
- - 4
10
- version: 0.4.4
8
+ - 6
9
+ - 2
10
+ version: 0.6.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - pboy
@@ -15,11 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-13 00:00:00 +02:00
18
+ date: 2011-07-03 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: nokogiri
22
+ name: etest
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
@@ -33,7 +33,7 @@ dependencies:
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- name: sanitize
36
+ name: nokogiri
37
37
  prerelease: false
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
@@ -47,7 +47,7 @@ dependencies:
47
47
  type: :runtime
48
48
  version_requirements: *id002
49
49
  - !ruby/object:Gem::Dependency
50
- name: htmlentities
50
+ name: sanitize
51
51
  prerelease: false
52
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
53
  none: false
@@ -61,7 +61,7 @@ dependencies:
61
61
  type: :runtime
62
62
  version_requirements: *id003
63
63
  - !ruby/object:Gem::Dependency
64
- name: json
64
+ name: htmlentities
65
65
  prerelease: false
66
66
  requirement: &id004 !ruby/object:Gem::Requirement
67
67
  none: false
@@ -75,7 +75,7 @@ dependencies:
75
75
  type: :runtime
76
76
  version_requirements: *id004
77
77
  - !ruby/object:Gem::Dependency
78
- name: etest
78
+ name: json
79
79
  prerelease: false
80
80
  requirement: &id005 !ruby/object:Gem::Requirement
81
81
  none: false
@@ -94,102 +94,16 @@ executables: []
94
94
 
95
95
  extensions: []
96
96
 
97
- extra_rdoc_files:
98
- - CHANGELOG
99
- - lib/nokogiri/nokogiri_ext.rb
100
- - lib/vex.rb
101
- - lib/vex/action_controller.rb
102
- - lib/vex/action_controller/error.rb
103
- - lib/vex/action_controller/output_logging.rb
104
- - lib/vex/action_controller/partial_helper.rb
105
- - lib/vex/action_controller/verify_action.rb
106
- - lib/vex/action_controller/verify_hostname.rb
107
- - lib/vex/action_controller/whitelisted_actions.rb
108
- - lib/vex/active_record.rb
109
- - lib/vex/active_record/__init__.rb
110
- - lib/vex/active_record/advisory_lock.rb
111
- - lib/vex/active_record/advisory_lock/mysql_adapter.rb
112
- - lib/vex/active_record/advisory_lock/sqlite_adapter.rb
113
- - lib/vex/active_record/belongs_to_many.rb
114
- - lib/vex/active_record/custom_validations.rb
115
- - lib/vex/active_record/find_by_extension.rb
116
- - lib/vex/active_record/gem.rb
117
- - lib/vex/active_record/lite_table.rb
118
- - lib/vex/active_record/lite_view.rb
119
- - lib/vex/active_record/mass_load.rb
120
- - lib/vex/active_record/mysql_backup.rb
121
- - lib/vex/active_record/plugins/default_value_for/LICENSE.TXT
122
- - lib/vex/active_record/plugins/default_value_for/README.rdoc
123
- - lib/vex/active_record/plugins/default_value_for/Rakefile
124
- - lib/vex/active_record/plugins/default_value_for/init.rb
125
- - lib/vex/active_record/plugins/default_value_for/test.rb
126
- - lib/vex/active_record/random_id.rb
127
- - lib/vex/active_record/resolver.rb
128
- - lib/vex/active_record/serialize_hash.rb
129
- - lib/vex/active_record/to_html.rb
130
- - lib/vex/active_record/validate.rb
131
- - lib/vex/active_record/validation_error_ext.rb
132
- - lib/vex/base.rb
133
- - lib/vex/base/app.rb
134
- - lib/vex/base/argv.rb
135
- - lib/vex/base/array/at_random.rb
136
- - lib/vex/base/array/avg.rb
137
- - lib/vex/base/array/cross.rb
138
- - lib/vex/base/array/each_batch.rb
139
- - lib/vex/base/array/parallel_map.rb
140
- - lib/vex/base/deprecation.rb
141
- - lib/vex/base/enumerable/deep.rb
142
- - lib/vex/base/enumerable/enumerable_ext.rb
143
- - lib/vex/base/enumerable/progress.rb
144
- - lib/vex/base/filesystem/fast_copy.rb
145
- - lib/vex/base/filesystem/grep.rb
146
- - lib/vex/base/filesystem/lock.rb
147
- - lib/vex/base/filesystem/lock.rb.test.lck
148
- - lib/vex/base/filesystem/lock.rb.test.pid
149
- - lib/vex/base/filesystem/make_dirs.rb
150
- - lib/vex/base/filesystem/parse_filename.rb
151
- - lib/vex/base/filesystem/tmp_file.rb
152
- - lib/vex/base/filesystem/write.rb
153
- - lib/vex/base/hash/compact.rb
154
- - lib/vex/base/hash/cross.rb
155
- - lib/vex/base/hash/ensure_keys.rb
156
- - lib/vex/base/hash/extract.rb
157
- - lib/vex/base/hash/extras.rb
158
- - lib/vex/base/hash/inspect.rb
159
- - lib/vex/base/hash/slop.rb
160
- - lib/vex/base/invalid_argument/invalid_argument.rb
161
- - lib/vex/base/local_conf.rb
162
- - lib/vex/base/net/http_ext.rb
163
- - lib/vex/base/net/socket_ext.rb
164
- - lib/vex/base/object/in.rb
165
- - lib/vex/base/object/insp.rb
166
- - lib/vex/base/object/multiple_attributes.rb
167
- - lib/vex/base/object/singleton_methods.rb
168
- - lib/vex/base/object/with_benchmark.rb
169
- - lib/vex/base/range_array.rb
170
- - lib/vex/base/range_ext.rb
171
- - lib/vex/base/safe_token.rb
172
- - lib/vex/base/string/iconvert.rb
173
- - lib/vex/base/string/string_ext.rb
174
- - lib/vex/base/system.rb
175
- - lib/vex/base/thread/deferred.rb
176
- - lib/vex/base/thread/sleep.rb
177
- - lib/vex/base/time/date_ext.rb
178
- - lib/vex/boot.rb
179
- - lib/vex/boot/array.rb
180
- - lib/vex/boot/blank.rb
181
- - lib/vex/boot/string.rb
182
- - tasks/echoe.rake
183
- - tasks/validate_db.rake
97
+ extra_rdoc_files: []
98
+
184
99
  files:
100
+ - .gitignore
185
101
  - CHANGELOG
186
102
  - Manifest
187
103
  - NOTICE.txt
188
104
  - Rakefile
189
105
  - VERSION
190
- - config/README
191
- - config/dependencies.rb
192
- - config/gem.yml
106
+ - gem.yml
193
107
  - init.rb
194
108
  - lib/nokogiri/nokogiri_ext.rb
195
109
  - lib/vex.rb
@@ -206,13 +120,17 @@ files:
206
120
  - lib/vex/active_record/advisory_lock/mysql_adapter.rb
207
121
  - lib/vex/active_record/advisory_lock/sqlite_adapter.rb
208
122
  - lib/vex/active_record/belongs_to_many.rb
123
+ - lib/vex/active_record/cached_column.rb
124
+ - lib/vex/active_record/cached_column/etest.rb
209
125
  - lib/vex/active_record/custom_validations.rb
126
+ - lib/vex/active_record/errors.rb
210
127
  - lib/vex/active_record/find_by_extension.rb
211
128
  - lib/vex/active_record/gem.rb
212
129
  - lib/vex/active_record/lite_table.rb
213
130
  - lib/vex/active_record/lite_view.rb
214
131
  - lib/vex/active_record/mass_load.rb
215
132
  - lib/vex/active_record/mysql_backup.rb
133
+ - lib/vex/active_record/plugins/default_value_for/.gitignore
216
134
  - lib/vex/active_record/plugins/default_value_for/LICENSE.TXT
217
135
  - lib/vex/active_record/plugins/default_value_for/README.rdoc
218
136
  - lib/vex/active_record/plugins/default_value_for/Rakefile
@@ -224,6 +142,7 @@ files:
224
142
  - lib/vex/active_record/to_html.rb
225
143
  - lib/vex/active_record/validate.rb
226
144
  - lib/vex/active_record/validation_error_ext.rb
145
+ - lib/vex/active_record/with_scope.rb
227
146
  - lib/vex/base.rb
228
147
  - lib/vex/base/app.rb
229
148
  - lib/vex/base/argv.rb
@@ -232,6 +151,7 @@ files:
232
151
  - lib/vex/base/array/cross.rb
233
152
  - lib/vex/base/array/each_batch.rb
234
153
  - lib/vex/base/array/parallel_map.rb
154
+ - lib/vex/base/cgi_ext.rb
235
155
  - lib/vex/base/deprecation.rb
236
156
  - lib/vex/base/enumerable/deep.rb
237
157
  - lib/vex/base/enumerable/enumerable_ext.rb
@@ -239,8 +159,6 @@ files:
239
159
  - lib/vex/base/filesystem/fast_copy.rb
240
160
  - lib/vex/base/filesystem/grep.rb
241
161
  - lib/vex/base/filesystem/lock.rb
242
- - lib/vex/base/filesystem/lock.rb.test.lck
243
- - lib/vex/base/filesystem/lock.rb.test.pid
244
162
  - lib/vex/base/filesystem/make_dirs.rb
245
163
  - lib/vex/base/filesystem/parse_filename.rb
246
164
  - lib/vex/base/filesystem/tmp_file.rb
@@ -260,7 +178,6 @@ files:
260
178
  - lib/vex/base/object/insp.rb
261
179
  - lib/vex/base/object/multiple_attributes.rb
262
180
  - lib/vex/base/object/singleton_methods.rb
263
- - lib/vex/base/object/with_benchmark.rb
264
181
  - lib/vex/base/range_array.rb
265
182
  - lib/vex/base/range_ext.rb
266
183
  - lib/vex/base/safe_token.rb
@@ -273,11 +190,11 @@ files:
273
190
  - lib/vex/boot.rb
274
191
  - lib/vex/boot/array.rb
275
192
  - lib/vex/boot/blank.rb
193
+ - lib/vex/boot/hash.rb
276
194
  - lib/vex/boot/string.rb
277
195
  - migration/create_request_log.rb
278
196
  - script/console
279
197
  - script/rebuild
280
- - tasks/echoe.rake
281
198
  - tasks/validate_db.rake
282
199
  - test/ar.rb
283
200
  - test/auto.rb
@@ -287,17 +204,16 @@ files:
287
204
  - test/config/local.defaults.yml
288
205
  - test/config/local.yml
289
206
  - test/test_helper.rb
290
- - vex.gemspec
207
+ - test/tmp/EMPTYDIR
208
+ - vex/gem.rake
209
+ - vex/gem.rb
291
210
  has_rdoc: true
292
211
  homepage: http://github.com/pboy/vex
293
212
  licenses: []
294
213
 
295
214
  post_install_message:
296
- rdoc_options:
297
- - --line-numbers
298
- - --inline-source
299
- - --title
300
- - Vex
215
+ rdoc_options: []
216
+
301
217
  require_paths:
302
218
  - lib
303
219
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -314,17 +230,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
314
230
  requirements:
315
231
  - - ">="
316
232
  - !ruby/object:Gem::Version
317
- hash: 11
233
+ hash: 3
318
234
  segments:
319
- - 1
320
- - 2
321
- version: "1.2"
235
+ - 0
236
+ version: "0"
322
237
  requirements: []
323
238
 
324
- rubyforge_project: vex
325
- rubygems_version: 1.3.7
239
+ rubyforge_project:
240
+ rubygems_version: 1.6.2
326
241
  signing_key:
327
242
  specification_version: 3
328
243
  summary: "Vex: some ruby extensions"
329
- test_files:
330
- - test/test_helper.rb
244
+ test_files: []
245
+
@@ -1,2 +0,0 @@
1
- #
2
- # Ruby files in this directory will be loaded during loading "vex/base"
@@ -1,10 +0,0 @@
1
- #
2
- # require all dependent gems
3
- require 'nokogiri' unless defined?(Nokogiri)
4
-
5
- require 'sanitize' unless defined?(Sanitize)
6
- require 'htmlentities' unless defined?(HtmlEntities)
7
- require 'json' unless defined?(Json)
8
-
9
- require 'etest' unless defined?(Etest)
10
-
@@ -1,11 +0,0 @@
1
- description: "Vex: some ruby extensions"
2
- url: http://github.com/pboy/vex
3
- author: pboy
4
- email: eno-pboy@open-lab.org
5
- ignore_pattern:
6
- - "tmp/*"
7
- - "test/tmp/*"
8
- - "test/*.sqlite3*"
9
- - "**/.*"
10
- - "vex.tmproj"
11
-
File without changes
@@ -1 +0,0 @@
1
- 25983.106710
@@ -1,110 +0,0 @@
1
- require "benchmark"
2
-
3
- module Object::WithBenchmark
4
-
5
- class BenchmarkProxy
6
- def initialize(host, *args)
7
- @host = host
8
-
9
- if args.length == 1 && args.first.is_a?(String)
10
- @out, @label = nil, args.first
11
- else
12
- @out, @label = *args
13
- end
14
- end
15
-
16
- private
17
-
18
- def report(msg)
19
- if !@out
20
- logger = @host.respond_to?(:logger) && @host.logger || App.logger
21
-
22
- logger.warn(msg)
23
- STDERR.puts(msg) if App.env == "development"
24
- elsif @out.respond_to?(:warn)
25
- @out.warn(msg)
26
- elsif @out.respond_to?(:<<)
27
- @out << "#{msg}\n"
28
- end
29
- end
30
-
31
- def method_missing(*args, &block)
32
- result = ex = nil
33
-
34
- realtime = Benchmark.realtime do
35
- begin
36
- result = @host.__send__(*args, &block)
37
- rescue
38
- ex = $!
39
- end
40
- end
41
-
42
- msg = "#{@label || "benchmarked"}: #{ex && "EXCEPTION #{ex} after "}#{"%.2f secs" % realtime}"
43
-
44
- report(msg)
45
-
46
- raise ex if ex
47
- result
48
- end
49
- end
50
-
51
- def no_benchmark(*args, &block)
52
- block_given? ? yield : self
53
- end
54
-
55
- def benchmark(*args, &block)
56
- count = args.last.is_a?(Fixnum) ? args.pop : 1
57
-
58
- proxy = BenchmarkProxy.new self, *args, &block
59
- return proxy unless block_given?
60
- return proxy.yield(&block) if count <= 1
61
- return proxy.yield do
62
- count.times(&block)
63
- end
64
- end
65
-
66
- def yield(&block); yield; end
67
- end
68
-
69
- Object.send :include, Object::WithBenchmark
70
-
71
- module Object::WithBenchmark::Etest
72
- def test_results
73
- App.logger.stubs(:warn).returns(nil)
74
-
75
- assert_equal 6, "string".benchmark.length
76
- assert_raise(NoMethodError) {
77
- "string".benchmark.you_dont_know_me
78
- }
79
- end
80
-
81
- def test_benchmark
82
- s = ""
83
- assert_equal 6, "string".benchmark(s, "").length
84
- assert s.length > 0
85
- end
86
-
87
- def test_label
88
- App.logger.stubs(:warn).returns(nil)
89
-
90
- assert_equal 6, "string".benchmark("oh! a label!").length
91
- end
92
-
93
- class DL
94
- attr :msg
95
- def warn(s);
96
- @msg = s
97
- end
98
- end
99
-
100
- def test_logger
101
- s = "string"
102
-
103
- def s.logger; @logger ||= DL.new; end
104
- assert s.respond_to?(:logger)
105
- assert s.logger.msg.blank?
106
-
107
- assert_equal 6, s.benchmark.length
108
- assert !s.logger.msg.blank?
109
- end
110
- end if VEX_TEST == "base"
@@ -1,52 +0,0 @@
1
- unless defined?(SKIP_ECHOE)
2
-
3
- #
4
- # GEM settings
5
- #
6
- GEM_ROOT = File.expand_path("#{File.dirname(__FILE__)}/..")
7
-
8
- if gem_config = YAML.load(File.read("#{GEM_ROOT}/config/gem.yml"))
9
- require 'echoe'
10
-
11
- #
12
- # a dependency reader
13
- module Dependency
14
- @@dependencies = []
15
-
16
- def self.require(file)
17
- @@dependencies << file
18
- end
19
-
20
- def self.load
21
- eval File.read("#{GEM_ROOT}/config/dependencies.rb"), binding
22
- @@dependencies
23
- end
24
- end
25
-
26
- Echoe.new(File.basename(GEM_ROOT), File.read("#{GEM_ROOT}/VERSION")) do |p|
27
- gem_config.each do |k,v|
28
- p.send "#{k}=",v
29
- end
30
-
31
- p.runtime_dependencies = Dependency.load
32
- end
33
-
34
- desc "Rebuild and install the gem"
35
- task :rebuild => %w(manifest default build_gemspec package) do
36
- gem = Dir.glob("pkg/*.gem").sort_by do |filename|
37
- File.new(filename).mtime
38
- end.last
39
-
40
- puts "============================================="
41
- puts "Installing gem..."
42
-
43
- system "sudo gem install #{gem} --no-test --no-ri --no-rdoc > /dev/null 2>&1"
44
-
45
- puts ""
46
- puts "I built and installed the gem for you. To upload, run "
47
- puts
48
- puts " gem push #{gem}"
49
- end
50
- end
51
-
52
- end
@@ -1,46 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{vex}
5
- s.version = "0.4.4"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["pboy"]
9
- s.date = %q{2010-06-13}
10
- s.description = %q{Vex: some ruby extensions}
11
- s.email = %q{eno-pboy@open-lab.org}
12
- s.extra_rdoc_files = ["CHANGELOG", "lib/nokogiri/nokogiri_ext.rb", "lib/vex.rb", "lib/vex/action_controller.rb", "lib/vex/action_controller/error.rb", "lib/vex/action_controller/output_logging.rb", "lib/vex/action_controller/partial_helper.rb", "lib/vex/action_controller/verify_action.rb", "lib/vex/action_controller/verify_hostname.rb", "lib/vex/action_controller/whitelisted_actions.rb", "lib/vex/active_record.rb", "lib/vex/active_record/__init__.rb", "lib/vex/active_record/advisory_lock.rb", "lib/vex/active_record/advisory_lock/mysql_adapter.rb", "lib/vex/active_record/advisory_lock/sqlite_adapter.rb", "lib/vex/active_record/belongs_to_many.rb", "lib/vex/active_record/custom_validations.rb", "lib/vex/active_record/find_by_extension.rb", "lib/vex/active_record/gem.rb", "lib/vex/active_record/lite_table.rb", "lib/vex/active_record/lite_view.rb", "lib/vex/active_record/mass_load.rb", "lib/vex/active_record/mysql_backup.rb", "lib/vex/active_record/plugins/default_value_for/LICENSE.TXT", "lib/vex/active_record/plugins/default_value_for/README.rdoc", "lib/vex/active_record/plugins/default_value_for/Rakefile", "lib/vex/active_record/plugins/default_value_for/init.rb", "lib/vex/active_record/plugins/default_value_for/test.rb", "lib/vex/active_record/random_id.rb", "lib/vex/active_record/resolver.rb", "lib/vex/active_record/serialize_hash.rb", "lib/vex/active_record/to_html.rb", "lib/vex/active_record/validate.rb", "lib/vex/active_record/validation_error_ext.rb", "lib/vex/base.rb", "lib/vex/base/app.rb", "lib/vex/base/argv.rb", "lib/vex/base/array/at_random.rb", "lib/vex/base/array/avg.rb", "lib/vex/base/array/cross.rb", "lib/vex/base/array/each_batch.rb", "lib/vex/base/array/parallel_map.rb", "lib/vex/base/deprecation.rb", "lib/vex/base/enumerable/deep.rb", "lib/vex/base/enumerable/enumerable_ext.rb", "lib/vex/base/enumerable/progress.rb", "lib/vex/base/filesystem/fast_copy.rb", "lib/vex/base/filesystem/grep.rb", "lib/vex/base/filesystem/lock.rb", "lib/vex/base/filesystem/lock.rb.test.lck", "lib/vex/base/filesystem/lock.rb.test.pid", "lib/vex/base/filesystem/make_dirs.rb", "lib/vex/base/filesystem/parse_filename.rb", "lib/vex/base/filesystem/tmp_file.rb", "lib/vex/base/filesystem/write.rb", "lib/vex/base/hash/compact.rb", "lib/vex/base/hash/cross.rb", "lib/vex/base/hash/ensure_keys.rb", "lib/vex/base/hash/extract.rb", "lib/vex/base/hash/extras.rb", "lib/vex/base/hash/inspect.rb", "lib/vex/base/hash/slop.rb", "lib/vex/base/invalid_argument/invalid_argument.rb", "lib/vex/base/local_conf.rb", "lib/vex/base/net/http_ext.rb", "lib/vex/base/net/socket_ext.rb", "lib/vex/base/object/in.rb", "lib/vex/base/object/insp.rb", "lib/vex/base/object/multiple_attributes.rb", "lib/vex/base/object/singleton_methods.rb", "lib/vex/base/object/with_benchmark.rb", "lib/vex/base/range_array.rb", "lib/vex/base/range_ext.rb", "lib/vex/base/safe_token.rb", "lib/vex/base/string/iconvert.rb", "lib/vex/base/string/string_ext.rb", "lib/vex/base/system.rb", "lib/vex/base/thread/deferred.rb", "lib/vex/base/thread/sleep.rb", "lib/vex/base/time/date_ext.rb", "lib/vex/boot.rb", "lib/vex/boot/array.rb", "lib/vex/boot/blank.rb", "lib/vex/boot/string.rb", "tasks/echoe.rake", "tasks/validate_db.rake"]
13
- s.files = ["CHANGELOG", "Manifest", "NOTICE.txt", "Rakefile", "VERSION", "config/README", "config/dependencies.rb", "config/gem.yml", "init.rb", "lib/nokogiri/nokogiri_ext.rb", "lib/vex.rb", "lib/vex/action_controller.rb", "lib/vex/action_controller/error.rb", "lib/vex/action_controller/output_logging.rb", "lib/vex/action_controller/partial_helper.rb", "lib/vex/action_controller/verify_action.rb", "lib/vex/action_controller/verify_hostname.rb", "lib/vex/action_controller/whitelisted_actions.rb", "lib/vex/active_record.rb", "lib/vex/active_record/__init__.rb", "lib/vex/active_record/advisory_lock.rb", "lib/vex/active_record/advisory_lock/mysql_adapter.rb", "lib/vex/active_record/advisory_lock/sqlite_adapter.rb", "lib/vex/active_record/belongs_to_many.rb", "lib/vex/active_record/custom_validations.rb", "lib/vex/active_record/find_by_extension.rb", "lib/vex/active_record/gem.rb", "lib/vex/active_record/lite_table.rb", "lib/vex/active_record/lite_view.rb", "lib/vex/active_record/mass_load.rb", "lib/vex/active_record/mysql_backup.rb", "lib/vex/active_record/plugins/default_value_for/LICENSE.TXT", "lib/vex/active_record/plugins/default_value_for/README.rdoc", "lib/vex/active_record/plugins/default_value_for/Rakefile", "lib/vex/active_record/plugins/default_value_for/init.rb", "lib/vex/active_record/plugins/default_value_for/test.rb", "lib/vex/active_record/random_id.rb", "lib/vex/active_record/resolver.rb", "lib/vex/active_record/serialize_hash.rb", "lib/vex/active_record/to_html.rb", "lib/vex/active_record/validate.rb", "lib/vex/active_record/validation_error_ext.rb", "lib/vex/base.rb", "lib/vex/base/app.rb", "lib/vex/base/argv.rb", "lib/vex/base/array/at_random.rb", "lib/vex/base/array/avg.rb", "lib/vex/base/array/cross.rb", "lib/vex/base/array/each_batch.rb", "lib/vex/base/array/parallel_map.rb", "lib/vex/base/deprecation.rb", "lib/vex/base/enumerable/deep.rb", "lib/vex/base/enumerable/enumerable_ext.rb", "lib/vex/base/enumerable/progress.rb", "lib/vex/base/filesystem/fast_copy.rb", "lib/vex/base/filesystem/grep.rb", "lib/vex/base/filesystem/lock.rb", "lib/vex/base/filesystem/lock.rb.test.lck", "lib/vex/base/filesystem/lock.rb.test.pid", "lib/vex/base/filesystem/make_dirs.rb", "lib/vex/base/filesystem/parse_filename.rb", "lib/vex/base/filesystem/tmp_file.rb", "lib/vex/base/filesystem/write.rb", "lib/vex/base/hash/compact.rb", "lib/vex/base/hash/cross.rb", "lib/vex/base/hash/ensure_keys.rb", "lib/vex/base/hash/extract.rb", "lib/vex/base/hash/extras.rb", "lib/vex/base/hash/inspect.rb", "lib/vex/base/hash/slop.rb", "lib/vex/base/invalid_argument/invalid_argument.rb", "lib/vex/base/local_conf.rb", "lib/vex/base/net/http_ext.rb", "lib/vex/base/net/socket_ext.rb", "lib/vex/base/object/in.rb", "lib/vex/base/object/insp.rb", "lib/vex/base/object/multiple_attributes.rb", "lib/vex/base/object/singleton_methods.rb", "lib/vex/base/object/with_benchmark.rb", "lib/vex/base/range_array.rb", "lib/vex/base/range_ext.rb", "lib/vex/base/safe_token.rb", "lib/vex/base/string/iconvert.rb", "lib/vex/base/string/string_ext.rb", "lib/vex/base/system.rb", "lib/vex/base/thread/deferred.rb", "lib/vex/base/thread/sleep.rb", "lib/vex/base/time/date_ext.rb", "lib/vex/boot.rb", "lib/vex/boot/array.rb", "lib/vex/boot/blank.rb", "lib/vex/boot/string.rb", "migration/create_request_log.rb", "script/console", "script/rebuild", "tasks/echoe.rake", "tasks/validate_db.rake", "test/ar.rb", "test/auto.rb", "test/base-tests/local_conf.rb", "test/base.rb", "test/boot.rb", "test/config/local.defaults.yml", "test/config/local.yml", "test/test_helper.rb", "vex.gemspec"]
14
- s.homepage = %q{http://github.com/pboy/vex}
15
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Vex"]
16
- s.require_paths = ["lib"]
17
- s.rubyforge_project = %q{vex}
18
- s.rubygems_version = %q{1.3.7}
19
- s.summary = %q{Vex: some ruby extensions}
20
- s.test_files = ["test/test_helper.rb"]
21
-
22
- if s.respond_to? :specification_version then
23
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
- s.specification_version = 3
25
-
26
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
- s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
28
- s.add_runtime_dependency(%q<sanitize>, [">= 0"])
29
- s.add_runtime_dependency(%q<htmlentities>, [">= 0"])
30
- s.add_runtime_dependency(%q<json>, [">= 0"])
31
- s.add_runtime_dependency(%q<etest>, [">= 0"])
32
- else
33
- s.add_dependency(%q<nokogiri>, [">= 0"])
34
- s.add_dependency(%q<sanitize>, [">= 0"])
35
- s.add_dependency(%q<htmlentities>, [">= 0"])
36
- s.add_dependency(%q<json>, [">= 0"])
37
- s.add_dependency(%q<etest>, [">= 0"])
38
- end
39
- else
40
- s.add_dependency(%q<nokogiri>, [">= 0"])
41
- s.add_dependency(%q<sanitize>, [">= 0"])
42
- s.add_dependency(%q<htmlentities>, [">= 0"])
43
- s.add_dependency(%q<json>, [">= 0"])
44
- s.add_dependency(%q<etest>, [">= 0"])
45
- end
46
- end