footing 0.0.6 → 0.0.7
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.
- data/README.md +0 -2
- data/lib/extensions/hash.rb +19 -1
- data/lib/extensions/postgresql_adapter.rb +20 -0
- data/lib/extensions/schema_statements.rb +31 -0
- metadata +4 -2
data/README.md
CHANGED
@@ -20,7 +20,6 @@ Footing.patch! Numeric, Footing::Numeric
|
|
20
20
|
String.ancestors
|
21
21
|
[
|
22
22
|
String,
|
23
|
-
Footing::String::InstanceMethods,
|
24
23
|
Footing::String,
|
25
24
|
Comparable,
|
26
25
|
Object,
|
@@ -31,7 +30,6 @@ String.ancestors
|
|
31
30
|
Numeric.ancestors
|
32
31
|
[
|
33
32
|
Numeric,
|
34
|
-
Footing::Numeric::InstanceMethods,
|
35
33
|
Footing::Numeric,
|
36
34
|
Comparable,
|
37
35
|
Object,
|
data/lib/extensions/hash.rb
CHANGED
@@ -4,7 +4,7 @@ module Footing
|
|
4
4
|
# Rekeys the Hash by invoking a method on the existing keys
|
5
5
|
# and uses the return value as the new key.
|
6
6
|
#
|
7
|
-
# NOTE: Creates and
|
7
|
+
# NOTE: Creates and returns a new Hash.
|
8
8
|
#
|
9
9
|
# Example:
|
10
10
|
# h = { [1] => "short", [1,2] => "medium", [1,2,3] => "long" }
|
@@ -19,5 +19,23 @@ module Footing
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
# Recursively forces all String values to the specified encoding.
|
23
|
+
# @param [] encoding The encoding to use.
|
24
|
+
# @yield [value] Yields the value after the encoding has been applied.
|
25
|
+
def force_encoding!(encoding, &block)
|
26
|
+
each do |key, value|
|
27
|
+
case value
|
28
|
+
when String
|
29
|
+
# force encoding then strip all non ascii chars
|
30
|
+
if block_given?
|
31
|
+
self[key] = yield(value.force_encoding(encoding))
|
32
|
+
else
|
33
|
+
self[key] = value.force_encoding(encoding)
|
34
|
+
end
|
35
|
+
when Hash then value.force_encoding!(encoding, &block)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
22
40
|
end
|
23
41
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Extend Rails with this module to add a uuid method in your migrations.
|
2
|
+
#
|
3
|
+
# Example:
|
4
|
+
# # rails_root/config/application.rb
|
5
|
+
# config.after_initialize do
|
6
|
+
# Footing.patch! ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition, Footing::PGTableDefinition
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
module Footing
|
10
|
+
module PGTableDefinition
|
11
|
+
|
12
|
+
# Provides a uuid method when inside a migration's create_table block.
|
13
|
+
def uuid(*args)
|
14
|
+
options = args.extract_options!
|
15
|
+
#column(args[0], 'uuid default uuid_generate_v1()', options)
|
16
|
+
column(args[0], 'uuid', options)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Extend Rails to support adding timestamp indexes for created_at & updated_at using day granularity.
|
2
|
+
#
|
3
|
+
# Example:
|
4
|
+
# # rails_root/config/application.rb
|
5
|
+
# config.after_initialize do
|
6
|
+
# Footing.patch! ActiveRecord::ConnectionAdapters::AbstractAdapter, Footing::PGSchemaStatements
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
module Footing
|
10
|
+
module PGSchemaStatements
|
11
|
+
|
12
|
+
# Adds indexes to the created_at and updated_at timestamp columns with 'day' granularity.
|
13
|
+
# This method is available to ActiveRecord::Migration change, up, down methods.
|
14
|
+
def add_timestamp_indexes(table_name)
|
15
|
+
%w(created_at updated_at).each do |column_name|
|
16
|
+
name = "index_#{table_name}_on_#{column_name}"
|
17
|
+
execute "create index #{name} on #{quote_table_name(table_name)} (date_trunc('day', #{quote_column_name(column_name)}))"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Removes indexes to the created_at and updated_at timestamp columns with 'day' granularity.
|
22
|
+
# This method is available to ActiveRecord::Migration change, up, down methods.
|
23
|
+
def remove_timestamp_indexes(table_name)
|
24
|
+
%w(created_at updated_at).each do |column_name|
|
25
|
+
name = "index_#{table_name}_on_#{column_name}"
|
26
|
+
execute "drop index if exists #{name}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: footing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-11 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! " Footing provides some sanity for monkey patching practices.\n
|
15
15
|
\ It's also a utility lib that contains additional functionality for core objects
|
@@ -25,6 +25,8 @@ files:
|
|
25
25
|
- lib/extensions/kernel.rb
|
26
26
|
- lib/extensions/numeric.rb
|
27
27
|
- lib/extensions/object.rb
|
28
|
+
- lib/extensions/postgresql_adapter.rb
|
29
|
+
- lib/extensions/schema_statements.rb
|
28
30
|
- lib/extensions/string.rb
|
29
31
|
- lib/footing.rb
|
30
32
|
- Gemfile
|