Module: Scrooge::Optimizations::Columns::SingletonMethods
- Defined in:
- lib/optimizations/columns/macro.rb
Constant Summary collapse
- ScroogeBlankString =
"".freeze
- ScroogeComma =
",".freeze
- ScroogeRegexSanitize =
/(?:LIMIT|WHERE|FROM|GROUP\s*BY|HAVING|ORDER\s*BY|PROCEDURE|FOR\s*UPDATE|INTO\s*OUTFILE).*/i
- ScroogeRegexJoin =
/(?:left|inner|outer|cross)*\s*(?:straight_join|join)/i
- @@scrooge_select_regexes =
{}
Instance Method Summary collapse
-
#_load(str) ⇒ Object
Marshal.load.
-
#scope_with_scrooge?(sql) ⇒ Boolean
Only scope n-1 rows by default.
-
#scrooge_reload(p_keys, missing_columns) ⇒ Object
Efficient reloading - get the hash with missing attributes directly from the underlying connection.
-
#scrooge_seen_column!(callsite_signature, attr_name) ⇒ Object
Augment a given callsite signature with a column / attribute.
-
#scrooge_select_sql(set) ⇒ Object
Generates a SELECT snippet for this Model from a given Set of columns.
Instance Method Details
#_load(str) ⇒ Object
Marshal.load
50 51 52 |
# File 'lib/optimizations/columns/macro.rb', line 50 def _load(str) Marshal.load(str) end |
#scope_with_scrooge?(sql) ⇒ Boolean
Only scope n-1 rows by default.
64 65 66 67 68 |
# File 'lib/optimizations/columns/macro.rb', line 64 def scope_with_scrooge?( sql ) sql =~ scrooge_select_regex && column_names.include?(self.primary_key.to_s) && sql !~ ScroogeRegexJoin end |
#scrooge_reload(p_keys, missing_columns) ⇒ Object
Efficient reloading - get the hash with missing attributes directly from the underlying connection.
57 58 59 60 |
# File 'lib/optimizations/columns/macro.rb', line 57 def scrooge_reload( p_keys, missing_columns ) sql_keys = p_keys.collect{|pk| "'#{pk}'"}.join(ScroogeComma) connection.send( :select, "SELECT #{scrooge_select_sql(missing_columns)} FROM #{quoted_table_name} WHERE #{quoted_table_name}.#{primary_key} IN (#{sql_keys})", "#{name} Scrooge Reload" ) end |
#scrooge_seen_column!(callsite_signature, attr_name) ⇒ Object
Augment a given callsite signature with a column / attribute.
38 39 40 |
# File 'lib/optimizations/columns/macro.rb', line 38 def scrooge_seen_column!( callsite_signature, attr_name ) scrooge_callsite( callsite_signature ).column!( attr_name ) end |
#scrooge_select_sql(set) ⇒ Object
Generates a SELECT snippet for this Model from a given Set of columns
44 45 46 |
# File 'lib/optimizations/columns/macro.rb', line 44 def scrooge_select_sql( set ) set.map{|a| attribute_with_table( a ) }.join( ScroogeComma ) end |