vex 0.4.4 → 0.6.2

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.
@@ -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