sql_record 1.0.4 → 1.0.5

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/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
- source "http://rubygems.org"
1
+ source :rubygems
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
- # gem "activesupport", ">= 2.3.5"
4
+ gem "activerecord", ">= 2.3.0"
5
5
 
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
@@ -1,8 +1,21 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ activemodel (3.0.5)
5
+ activesupport (= 3.0.5)
6
+ builder (~> 2.1.2)
7
+ i18n (~> 0.4)
8
+ activerecord (3.0.5)
9
+ activemodel (= 3.0.5)
10
+ activesupport (= 3.0.5)
11
+ arel (~> 2.0.2)
12
+ tzinfo (~> 0.3.23)
13
+ activesupport (3.0.5)
14
+ arel (2.0.9)
15
+ builder (2.1.2)
4
16
  diff-lcs (1.1.2)
5
17
  git (1.2.5)
18
+ i18n (0.5.0)
6
19
  jeweler (1.5.2)
7
20
  bundler (~> 1.0.0)
8
21
  git (>= 1.2.5)
@@ -18,12 +31,14 @@ GEM
18
31
  rspec-expectations (2.3.0)
19
32
  diff-lcs (~> 1.1.2)
20
33
  rspec-mocks (2.3.0)
34
+ tzinfo (0.3.25)
21
35
  yard (0.6.7)
22
36
 
23
37
  PLATFORMS
24
38
  ruby
25
39
 
26
40
  DEPENDENCIES
41
+ activerecord (>= 2.3.0)
27
42
  bundler (~> 1.0.0)
28
43
  jeweler (~> 1.5.2)
29
44
  rcov
@@ -8,7 +8,7 @@ Well that's what SQLRecord does.
8
8
 
9
9
  == Example
10
10
 
11
- class UserWithAccount << SQLRecord::Base
11
+ class UserWithAccount < SQLRecord::Base
12
12
 
13
13
  with_opts :class => User do
14
14
  column :id
@@ -22,9 +22,9 @@ Well that's what SQLRecord does.
22
22
 
23
23
  column :account_id, :from => :id, :class => Account
24
24
 
25
- query do |params, default_columns|
25
+ query do |params|
26
26
  [
27
- "SELECT #{default_columns} " +
27
+ "SELECT #{sql_select_columns.join(', ')} " +
28
28
  "FROM users INNER JOIN accounts " +
29
29
  "ON users.account_id = accounts.id " +
30
30
  "WHERE users.id = ?",
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.4
1
+ 1.0.5
@@ -29,6 +29,12 @@ module SQLRecord
29
29
  @default_opts = nil
30
30
  end
31
31
 
32
+ # Sugar for with
33
+ def with_class klass, opts = {}, &block
34
+ opts[:class] = klass
35
+ with_opts opts, &block
36
+ end
37
+
32
38
  # Specifies the mapping from an ActiveRecord#column_definition to an SQLRecord instance attribute.
33
39
  # @param [Symbol] attribute_name the attribute you are defining for this model
34
40
  # @option opts [Class] :class the active record this attribute will use to type_cast from
@@ -59,10 +65,6 @@ module SQLRecord
59
65
  (@sql_select_columns ||= []) << select_column
60
66
  end
61
67
 
62
- def sql_select_helper
63
- @sql_select_columns.join(', ')
64
- end
65
-
66
68
  end
67
69
  end
68
70
  end
@@ -11,6 +11,15 @@ module SQLRecord
11
11
  end
12
12
  end
13
13
 
14
+ # Specifies the query to execute
15
+ # @yield the block that will be executed with each {#find}
16
+ # @yieldparam [Hash] params the parametrs passed in from {#find}
17
+ # @yieldreturn [Array, String] Either the sql string or a sanitize array to be executed.
18
+ # @note
19
+ # do not try to sanitize identifiers, only values will sanitize well
20
+ # ["where id = ?", 1] => "where id = 1"
21
+ # ["where name = ?", "hello"] => "where id = 'hello'"
22
+ # ["ORDER BY ? ASC", "id"] => "ORDER BY 'id' ASC" << not legitimate SQL
14
23
  def query &deferred
15
24
  @query_proc = deferred
16
25
  end
@@ -18,12 +27,18 @@ module SQLRecord
18
27
  protected
19
28
 
20
29
  # @todo check that this logs the sql
30
+ # @todo Write own sanitizer: (http://www.ruby-forum.com/topic/187658)
31
+ # sanitize_sql_array sanitizes values correctly, not identifiers, eg:
32
+ # ["where id = ?", 1] => "where id = 1"
33
+ # ["where name = ?", "hello"] => "where id = 'hello'"
34
+ # ["ORDER BY ? ASC", "id"] => "ORDER BY 'id' ASC" << not legitimate SQL
21
35
  def execute_query params={}
22
- sql = ActiveRecord::Base.send(:sanitize_sql_array, get_query_array(params))
36
+ sql = get_query(params)
37
+ sql = ActiveRecord::Base.send(:sanitize_sql_array, sql) if sql.is_a?(Array)
23
38
  ActiveRecord::Base.connection.execute(sql)
24
39
  end
25
40
 
26
- def get_query_array(params)
41
+ def get_query(params)
27
42
  @query_proc.call(params)
28
43
  end
29
44
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sql_record}
8
- s.version = "1.0.4"
8
+ s.version = "1.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rasheed Abdul-Aziz"]
12
- s.date = %q{2011-04-08}
12
+ s.date = %q{2011-04-11}
13
13
  s.description = %q{Do you use ActiveRecord::Connection.execute for speed sometimes? Does it bother you that the results are not mapped to your schema and type-cast as ActiveRecord would? Well that's what SQLRecord does.}
14
14
  s.email = %q{rasheed@visfleet.com}
15
15
  s.extra_rdoc_files = [
@@ -52,6 +52,7 @@ Gem::Specification.new do |s|
52
52
  s.specification_version = 3
53
53
 
54
54
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
+ s.add_runtime_dependency(%q<activerecord>, [">= 2.3.0"])
55
56
  s.add_development_dependency(%q<rdoc>, [">= 0"])
56
57
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
57
58
  s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
@@ -59,6 +60,7 @@ Gem::Specification.new do |s|
59
60
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
60
61
  s.add_development_dependency(%q<rcov>, [">= 0"])
61
62
  else
63
+ s.add_dependency(%q<activerecord>, [">= 2.3.0"])
62
64
  s.add_dependency(%q<rdoc>, [">= 0"])
63
65
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
64
66
  s.add_dependency(%q<yard>, ["~> 0.6.0"])
@@ -67,6 +69,7 @@ Gem::Specification.new do |s|
67
69
  s.add_dependency(%q<rcov>, [">= 0"])
68
70
  end
69
71
  else
72
+ s.add_dependency(%q<activerecord>, [">= 2.3.0"])
70
73
  s.add_dependency(%q<rdoc>, [">= 0"])
71
74
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
72
75
  s.add_dependency(%q<yard>, ["~> 0.6.0"])
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sql_record
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 4
10
- version: 1.0.4
9
+ - 5
10
+ version: 1.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Rasheed Abdul-Aziz
@@ -15,12 +15,28 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-08 00:00:00 +00:00
18
+ date: 2011-04-11 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rdoc
22
+ name: activerecord
23
23
  version_requirements: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 2
31
+ - 3
32
+ - 0
33
+ version: 2.3.0
34
+ prerelease: false
35
+ type: :runtime
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rdoc
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
24
40
  none: false
25
41
  requirements:
26
42
  - - ">="
@@ -31,10 +47,10 @@ dependencies:
31
47
  version: "0"
32
48
  prerelease: false
33
49
  type: :development
34
- requirement: *id001
50
+ requirement: *id002
35
51
  - !ruby/object:Gem::Dependency
36
52
  name: rspec
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
38
54
  none: false
39
55
  requirements:
40
56
  - - ~>
@@ -47,10 +63,10 @@ dependencies:
47
63
  version: 2.3.0
48
64
  prerelease: false
49
65
  type: :development
50
- requirement: *id002
66
+ requirement: *id003
51
67
  - !ruby/object:Gem::Dependency
52
68
  name: yard
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
54
70
  none: false
55
71
  requirements:
56
72
  - - ~>
@@ -63,10 +79,10 @@ dependencies:
63
79
  version: 0.6.0
64
80
  prerelease: false
65
81
  type: :development
66
- requirement: *id003
82
+ requirement: *id004
67
83
  - !ruby/object:Gem::Dependency
68
84
  name: bundler
69
- version_requirements: &id004 !ruby/object:Gem::Requirement
85
+ version_requirements: &id005 !ruby/object:Gem::Requirement
70
86
  none: false
71
87
  requirements:
72
88
  - - ~>
@@ -79,10 +95,10 @@ dependencies:
79
95
  version: 1.0.0
80
96
  prerelease: false
81
97
  type: :development
82
- requirement: *id004
98
+ requirement: *id005
83
99
  - !ruby/object:Gem::Dependency
84
100
  name: jeweler
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
101
+ version_requirements: &id006 !ruby/object:Gem::Requirement
86
102
  none: false
87
103
  requirements:
88
104
  - - ~>
@@ -95,10 +111,10 @@ dependencies:
95
111
  version: 1.5.2
96
112
  prerelease: false
97
113
  type: :development
98
- requirement: *id005
114
+ requirement: *id006
99
115
  - !ruby/object:Gem::Dependency
100
116
  name: rcov
101
- version_requirements: &id006 !ruby/object:Gem::Requirement
117
+ version_requirements: &id007 !ruby/object:Gem::Requirement
102
118
  none: false
103
119
  requirements:
104
120
  - - ">="
@@ -109,7 +125,7 @@ dependencies:
109
125
  version: "0"
110
126
  prerelease: false
111
127
  type: :development
112
- requirement: *id006
128
+ requirement: *id007
113
129
  description: Do you use ActiveRecord::Connection.execute for speed sometimes? Does it bother you that the results are not mapped to your schema and type-cast as ActiveRecord would? Well that's what SQLRecord does.
114
130
  email: rasheed@visfleet.com
115
131
  executables: []