torque-postgresql 1.1.7 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/torque/postgresql.rb +0 -2
- data/lib/torque/postgresql/adapter.rb +7 -1
- data/lib/torque/postgresql/adapter/database_statements.rb +6 -15
- data/lib/torque/postgresql/adapter/oid.rb +3 -1
- data/lib/torque/postgresql/adapter/oid/box.rb +2 -0
- data/lib/torque/postgresql/adapter/oid/circle.rb +2 -0
- data/lib/torque/postgresql/adapter/oid/enum.rb +2 -0
- data/lib/torque/postgresql/adapter/oid/enum_set.rb +2 -0
- data/lib/torque/postgresql/adapter/oid/interval.rb +2 -0
- data/lib/torque/postgresql/adapter/oid/line.rb +2 -0
- data/lib/torque/postgresql/adapter/oid/range.rb +2 -0
- data/lib/torque/postgresql/adapter/oid/segment.rb +2 -0
- data/lib/torque/postgresql/adapter/quoting.rb +2 -0
- data/lib/torque/postgresql/adapter/schema_creation.rb +20 -23
- data/lib/torque/postgresql/adapter/schema_definitions.rb +9 -21
- data/lib/torque/postgresql/adapter/schema_dumper.rb +76 -11
- data/lib/torque/postgresql/adapter/schema_statements.rb +4 -12
- data/lib/torque/postgresql/arel/infix_operation.rb +5 -1
- data/lib/torque/postgresql/arel/join_source.rb +2 -0
- data/lib/torque/postgresql/arel/nodes.rb +2 -0
- data/lib/torque/postgresql/arel/operations.rb +2 -0
- data/lib/torque/postgresql/arel/select_manager.rb +2 -0
- data/lib/torque/postgresql/arel/visitors.rb +6 -3
- data/lib/torque/postgresql/associations.rb +0 -3
- data/lib/torque/postgresql/associations/association.rb +5 -1
- data/lib/torque/postgresql/associations/association_scope.rb +20 -60
- data/lib/torque/postgresql/associations/belongs_to_many_association.rb +5 -1
- data/lib/torque/postgresql/associations/builder/belongs_to_many.rb +2 -0
- data/lib/torque/postgresql/associations/builder/has_many.rb +2 -0
- data/lib/torque/postgresql/associations/preloader.rb +0 -32
- data/lib/torque/postgresql/associations/preloader/association.rb +42 -10
- data/lib/torque/postgresql/attributes/builder.rb +2 -0
- data/lib/torque/postgresql/attributes/builder/enum.rb +5 -3
- data/lib/torque/postgresql/attributes/builder/period.rb +6 -4
- data/lib/torque/postgresql/attributes/enum.rb +5 -10
- data/lib/torque/postgresql/attributes/enum_set.rb +2 -0
- data/lib/torque/postgresql/attributes/lazy.rb +3 -1
- data/lib/torque/postgresql/attributes/period.rb +2 -0
- data/lib/torque/postgresql/autosave_association.rb +9 -3
- data/lib/torque/postgresql/auxiliary_statement.rb +3 -13
- data/lib/torque/postgresql/auxiliary_statement/settings.rb +2 -0
- data/lib/torque/postgresql/base.rb +2 -0
- data/lib/torque/postgresql/coder.rb +6 -5
- data/lib/torque/postgresql/collector.rb +2 -0
- data/lib/torque/postgresql/config.rb +3 -4
- data/lib/torque/postgresql/geometry_builder.rb +2 -0
- data/lib/torque/postgresql/i18n.rb +2 -0
- data/lib/torque/postgresql/inheritance.rb +15 -17
- data/lib/torque/postgresql/migration/command_recorder.rb +2 -0
- data/lib/torque/postgresql/railtie.rb +2 -0
- data/lib/torque/postgresql/reflection.rb +2 -0
- data/lib/torque/postgresql/reflection/abstract_reflection.rb +28 -26
- data/lib/torque/postgresql/reflection/association_reflection.rb +2 -0
- data/lib/torque/postgresql/reflection/belongs_to_many_reflection.rb +6 -26
- data/lib/torque/postgresql/reflection/has_many_reflection.rb +2 -0
- data/lib/torque/postgresql/reflection/runtime_reflection.rb +2 -0
- data/lib/torque/postgresql/reflection/through_reflection.rb +2 -0
- data/lib/torque/postgresql/relation.rb +10 -11
- data/lib/torque/postgresql/relation/auxiliary_statement.rb +7 -8
- data/lib/torque/postgresql/relation/distinct_on.rb +3 -1
- data/lib/torque/postgresql/relation/inheritance.rb +2 -0
- data/lib/torque/postgresql/relation/merger.rb +2 -0
- data/lib/torque/postgresql/schema_cache.rb +2 -0
- data/lib/torque/postgresql/version.rb +3 -1
- data/spec/en.yml +19 -0
- data/spec/factories/authors.rb +6 -0
- data/spec/factories/comments.rb +13 -0
- data/spec/factories/posts.rb +6 -0
- data/spec/factories/tags.rb +5 -0
- data/spec/factories/texts.rb +5 -0
- data/spec/factories/users.rb +6 -0
- data/spec/factories/videos.rb +5 -0
- data/spec/mocks/cache_query.rb +16 -0
- data/spec/mocks/create_table.rb +35 -0
- data/spec/models/activity.rb +3 -0
- data/spec/models/activity_book.rb +4 -0
- data/spec/models/activity_post.rb +7 -0
- data/spec/models/activity_post/sample.rb +4 -0
- data/spec/models/author.rb +4 -0
- data/spec/models/author_journalist.rb +4 -0
- data/spec/models/comment.rb +3 -0
- data/spec/models/course.rb +2 -0
- data/spec/models/geometry.rb +2 -0
- data/spec/models/guest_comment.rb +4 -0
- data/spec/models/post.rb +6 -0
- data/spec/models/tag.rb +2 -0
- data/spec/models/text.rb +2 -0
- data/spec/models/time_keeper.rb +2 -0
- data/spec/models/user.rb +8 -0
- data/spec/models/video.rb +2 -0
- data/spec/schema.rb +141 -0
- data/spec/spec_helper.rb +59 -0
- data/spec/tests/arel_spec.rb +74 -0
- data/spec/tests/auxiliary_statement_spec.rb +593 -0
- data/spec/tests/belongs_to_many_spec.rb +246 -0
- data/spec/tests/coder_spec.rb +367 -0
- data/spec/tests/collector_spec.rb +59 -0
- data/spec/tests/distinct_on_spec.rb +65 -0
- data/spec/tests/enum_set_spec.rb +306 -0
- data/spec/tests/enum_spec.rb +628 -0
- data/spec/tests/geometric_builder_spec.rb +221 -0
- data/spec/tests/has_many_spec.rb +400 -0
- data/spec/tests/interval_spec.rb +167 -0
- data/spec/tests/lazy_spec.rb +24 -0
- data/spec/tests/period_spec.rb +954 -0
- data/spec/tests/quoting_spec.rb +24 -0
- data/spec/tests/range_spec.rb +36 -0
- data/spec/tests/relation_spec.rb +57 -0
- data/spec/tests/table_inheritance_spec.rb +416 -0
- metadata +102 -14
- data/lib/torque/postgresql/associations/join_dependency/join_association.rb +0 -15
- data/lib/torque/postgresql/schema_dumper.rb +0 -91
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f108bfb672743d7edd701b77eb102aa6f9164b4981e1f366d2354d9e8cf3360b
|
4
|
+
data.tar.gz: 60d7208f0798acbde69aee78fca7a92d4824c75dcecc44acd16dcf59568f0e04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a463f94c5a09f74bbb2ba57fe9fb2f7fe649f243c239f7709180c29988f2b5424bffec68d0ec1d2c4ae8ad1191d6156e96dd00c2a66a2a473e02411c563e21f
|
7
|
+
data.tar.gz: 1568915cd13e2b93b77a702cfd346326aa9e07605aac3deca0f3dacbe82b24762a84f3007a4dffc493888c94802724defbfc01037d0bad984e3735783a790f35
|
data/lib/torque/postgresql.rb
CHANGED
@@ -6,7 +6,6 @@ require 'active_support'
|
|
6
6
|
|
7
7
|
require 'active_support/core_ext/date/acts_like'
|
8
8
|
require 'active_support/core_ext/time/zones'
|
9
|
-
require 'active_support/core_ext/hash/compact'
|
10
9
|
require 'active_record/connection_adapters/postgresql_adapter'
|
11
10
|
|
12
11
|
require 'torque/postgresql/config'
|
@@ -28,6 +27,5 @@ require 'torque/postgresql/migration'
|
|
28
27
|
require 'torque/postgresql/relation'
|
29
28
|
require 'torque/postgresql/reflection'
|
30
29
|
require 'torque/postgresql/schema_cache'
|
31
|
-
require 'torque/postgresql/schema_dumper'
|
32
30
|
|
33
31
|
require 'torque/postgresql/railtie' if defined?(Rails)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'adapter/database_statements'
|
2
4
|
require_relative 'adapter/oid'
|
3
5
|
require_relative 'adapter/quoting'
|
@@ -10,7 +12,6 @@ module Torque
|
|
10
12
|
module PostgreSQL
|
11
13
|
module Adapter
|
12
14
|
include Quoting
|
13
|
-
include ColumnDumper unless Torque::PostgreSQL::AR521
|
14
15
|
include DatabaseStatements
|
15
16
|
include SchemaStatements
|
16
17
|
|
@@ -20,6 +21,11 @@ module Torque
|
|
20
21
|
select_value('SELECT version()').match(/#{Adapter::ADAPTER_NAME} ([\d\.]+)/)[1]
|
21
22
|
)
|
22
23
|
end
|
24
|
+
|
25
|
+
# Add `inherits` to the list of extracted table options
|
26
|
+
def extract_table_options!(options)
|
27
|
+
super.merge(options.extract!(:inherits))
|
28
|
+
end
|
23
29
|
end
|
24
30
|
|
25
31
|
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend Adapter
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Torque
|
2
4
|
module PostgreSQL
|
3
5
|
module Adapter
|
@@ -43,16 +45,9 @@ module Torque
|
|
43
45
|
end
|
44
46
|
|
45
47
|
# :nodoc:
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
torque_load_additional_types(oids)
|
50
|
-
end
|
51
|
-
else
|
52
|
-
def load_additional_types(type_map, oids = nil)
|
53
|
-
super
|
54
|
-
torque_load_additional_types(oids)
|
55
|
-
end
|
48
|
+
def load_additional_types(oids = nil)
|
49
|
+
super
|
50
|
+
torque_load_additional_types(oids)
|
56
51
|
end
|
57
52
|
|
58
53
|
# Add the composite types to be loaded too.
|
@@ -80,11 +75,7 @@ module Torque
|
|
80
75
|
SQL
|
81
76
|
|
82
77
|
execute_and_clear(query, 'SCHEMA', []) do |records|
|
83
|
-
records.each
|
84
|
-
case row['typtype']
|
85
|
-
when 'e' then OID::Enum.create(row, type_map)
|
86
|
-
end
|
87
|
-
end
|
78
|
+
records.each { |row| OID::Enum.create(row, type_map) }
|
88
79
|
end
|
89
80
|
end
|
90
81
|
|
@@ -17,9 +17,11 @@ module Torque
|
|
17
17
|
ActiveRecord::Type.register(:circle, OID::Circle, adapter: :postgresql)
|
18
18
|
ActiveRecord::Type.register(:enum, OID::Enum, adapter: :postgresql)
|
19
19
|
ActiveRecord::Type.register(:enum_set, OID::EnumSet, adapter: :postgresql)
|
20
|
-
ActiveRecord::Type.register(:interval, OID::Interval, adapter: :postgresql)
|
21
20
|
ActiveRecord::Type.register(:line, OID::Line, adapter: :postgresql)
|
22
21
|
ActiveRecord::Type.register(:segment, OID::Segment, adapter: :postgresql)
|
22
|
+
|
23
|
+
ActiveRecord::Type.register(:interval, OID::Interval, adapter: :postgresql) \
|
24
|
+
unless PostgreSQL::AR610
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
@@ -5,10 +5,11 @@ module Torque
|
|
5
5
|
|
6
6
|
# Redefine original table creation command to ensure PostgreSQL standard
|
7
7
|
def visit_TableDefinition(o)
|
8
|
-
create_sql = "CREATE#{
|
9
|
-
create_sql << "
|
8
|
+
create_sql = +"CREATE#{table_modifier_in_create(o)} TABLE "
|
9
|
+
create_sql << "IF NOT EXISTS " if o.if_not_exists
|
10
|
+
create_sql << "#{quote_table_name(o.name)} "
|
10
11
|
|
11
|
-
statements = o.columns.map{ |c| accept c }
|
12
|
+
statements = o.columns.map { |c| accept c }
|
12
13
|
statements << accept(o.primary_keys) if o.primary_keys
|
13
14
|
|
14
15
|
if supports_indexes_in_create?
|
@@ -17,36 +18,32 @@ module Torque
|
|
17
18
|
end)
|
18
19
|
end
|
19
20
|
|
20
|
-
if
|
21
|
+
if supports_foreign_keys?
|
21
22
|
statements.concat(o.foreign_keys.map do |to_table, options|
|
22
23
|
foreign_key_in_create(o.name, to_table, options)
|
23
24
|
end)
|
24
25
|
end
|
25
26
|
|
26
|
-
if
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
add_table_options!(create_sql, table_options(o))
|
31
|
-
|
32
|
-
if o.inherits.present?
|
33
|
-
tables = o.inherits.map(&method(:quote_table_name))
|
34
|
-
create_sql << " INHERITS ( #{tables.join(' , ')} )"
|
35
|
-
end
|
27
|
+
if respond_to?(:supports_check_constraints?) && supports_check_constraints?
|
28
|
+
statements.concat(o.check_constraints.map do |expression, options|
|
29
|
+
check_constraint_in_create(o.name, expression, options)
|
30
|
+
end)
|
36
31
|
end
|
37
32
|
|
38
|
-
create_sql
|
39
|
-
|
33
|
+
create_sql << "(#{statements.join(', ')})" \
|
34
|
+
if statements.present? || o.inherits.present?
|
40
35
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
36
|
+
options = PostgreSQL::AR610 ? o : table_options(o)
|
37
|
+
add_table_options!(create_sql, options)
|
38
|
+
|
39
|
+
if o.inherits.present?
|
40
|
+
tables = o.inherits.map(&method(:quote_table_name))
|
41
|
+
create_sql << " INHERITS ( #{tables.join(' , ')} )"
|
47
42
|
end
|
48
|
-
end
|
49
43
|
|
44
|
+
create_sql << " AS #{to_sql(o.as)}" if o.as
|
45
|
+
create_sql
|
46
|
+
end
|
50
47
|
end
|
51
48
|
|
52
49
|
ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaCreation.prepend SchemaCreation
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Torque
|
2
4
|
module PostgreSQL
|
3
5
|
module Adapter
|
@@ -7,17 +9,15 @@ module Torque
|
|
7
9
|
# dates to be stored without having to store a seconds-based integer
|
8
10
|
# or any sort of other approach
|
9
11
|
def interval(*args, **options)
|
10
|
-
args.each { |name| column(name, :interval, options) }
|
12
|
+
args.each { |name| column(name, :interval, **options) }
|
11
13
|
end
|
12
14
|
|
13
15
|
# Creates a column with an enum type, needing to specify the subtype,
|
14
16
|
# which is basically the name of the type defined prior creating the
|
15
17
|
# column
|
16
18
|
def enum(*args, **options)
|
17
|
-
|
18
|
-
|
19
|
-
column(name, type, options)
|
20
|
-
end
|
19
|
+
subtype = options.delete(:subtype)
|
20
|
+
args.each { |name| column(name, (subtype || name), **options) }
|
21
21
|
end
|
22
22
|
|
23
23
|
# Creates a column with an enum array type, needing to specify the
|
@@ -34,23 +34,11 @@ module Torque
|
|
34
34
|
|
35
35
|
attr_reader :inherits
|
36
36
|
|
37
|
-
def initialize(
|
38
|
-
|
39
|
-
old_args << options.delete(:temporary) || false
|
40
|
-
old_args << options.delete(:options)
|
41
|
-
old_args << options.delete(:as)
|
42
|
-
comment = options.delete(:comment)
|
43
|
-
|
44
|
-
super(name, *old_args, comment: comment)
|
45
|
-
|
46
|
-
if options.key?(:inherits)
|
47
|
-
@inherits = Array[options.delete(:inherits)].flatten.compact
|
48
|
-
@inherited_id = !(options.key?(:primary_key) || options.key?(:id))
|
49
|
-
end
|
50
|
-
end
|
37
|
+
def initialize(*args, **options)
|
38
|
+
super
|
51
39
|
|
52
|
-
|
53
|
-
|
40
|
+
@inherits = Array.wrap(options.delete(:inherits)).flatten.compact \
|
41
|
+
if options.key?(:inherits)
|
54
42
|
end
|
55
43
|
end
|
56
44
|
|
@@ -1,22 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Torque
|
2
4
|
module PostgreSQL
|
3
5
|
module Adapter
|
4
|
-
module
|
6
|
+
module SchemaDumper
|
7
|
+
def dump(stream) # :nodoc:
|
8
|
+
@connection.dump_mode!
|
9
|
+
super
|
5
10
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
@connection.dump_mode!
|
12
|
+
stream
|
13
|
+
end
|
14
|
+
|
15
|
+
def extensions(stream) # :nodoc:
|
16
|
+
super
|
17
|
+
user_defined_types(stream)
|
11
18
|
end
|
12
19
|
|
13
20
|
# Translate +:enum_set+ into +:enum+
|
14
21
|
def schema_type(column)
|
15
|
-
|
16
|
-
:enum
|
17
|
-
else
|
18
|
-
super
|
19
|
-
end
|
22
|
+
column.type == :enum_set ? :enum : super
|
20
23
|
end
|
21
24
|
|
22
25
|
# Adds +:subtype+ option to the default set
|
@@ -36,7 +39,69 @@ module Torque
|
|
36
39
|
column.sql_type.to_sym.inspect if column.type == :enum || column.type == :enum_set
|
37
40
|
end
|
38
41
|
|
42
|
+
def tables(stream) # :nodoc:
|
43
|
+
inherited_tables = @connection.inherited_tables
|
44
|
+
sorted_tables = @connection.tables.sort - @connection.views
|
45
|
+
|
46
|
+
stream.puts " # These are the common tables managed"
|
47
|
+
(sorted_tables - inherited_tables.keys).each do |table_name|
|
48
|
+
table(table_name, stream) unless ignored?(table_name)
|
49
|
+
end
|
50
|
+
|
51
|
+
if inherited_tables.present?
|
52
|
+
stream.puts " # These are tables that has inheritance"
|
53
|
+
inherited_tables.each do |table_name, inherits|
|
54
|
+
next if ignored?(table_name)
|
55
|
+
|
56
|
+
sub_stream = StringIO.new
|
57
|
+
table(table_name, sub_stream)
|
58
|
+
|
59
|
+
# Add the inherits setting
|
60
|
+
sub_stream.rewind
|
61
|
+
inherits.map!(&:to_sym)
|
62
|
+
inherits = inherits.first if inherits.size === 1
|
63
|
+
inherits = ", inherits: #{inherits.inspect} do |t|"
|
64
|
+
table_dump = sub_stream.read.gsub(/ do \|t\|$/, inherits)
|
65
|
+
|
66
|
+
# Ensure bodyless definitions
|
67
|
+
table_dump.gsub!(/do \|t\|\n end/, '')
|
68
|
+
stream.print table_dump
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Dump foreign keys at the end to make sure all dependent tables exist.
|
73
|
+
if @connection.supports_foreign_keys?
|
74
|
+
sorted_tables.each do |tbl|
|
75
|
+
foreign_keys(tbl, stream) unless ignored?(tbl)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# Scenic integration
|
80
|
+
views(stream) if defined?(::Scenic)
|
81
|
+
end
|
82
|
+
|
83
|
+
# Dump user defined types like enum
|
84
|
+
def user_defined_types(stream)
|
85
|
+
types = @connection.user_defined_types('e')
|
86
|
+
return unless types.any?
|
87
|
+
|
88
|
+
stream.puts " # These are user-defined types used on this database"
|
89
|
+
types.sort_by(&:first).each { |(name, type)| send(type.to_sym, name, stream) }
|
90
|
+
stream.puts
|
91
|
+
rescue => e
|
92
|
+
stream.puts "# Could not dump user-defined types because of following #{e.class}"
|
93
|
+
stream.puts "# #{e.message}"
|
94
|
+
stream.puts
|
95
|
+
end
|
96
|
+
|
97
|
+
# Dump enum custom type
|
98
|
+
def enum(name, stream)
|
99
|
+
values = @connection.enum_values(name).map { |v| "\"#{v}\"" }
|
100
|
+
stream.puts " create_enum \"#{name}\", [#{values.join(', ')}], force: :cascade"
|
101
|
+
end
|
39
102
|
end
|
103
|
+
|
104
|
+
ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaDumper.prepend SchemaDumper
|
40
105
|
end
|
41
106
|
end
|
42
107
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Torque
|
2
4
|
module PostgreSQL
|
3
5
|
module Adapter
|
@@ -73,24 +75,14 @@ module Torque
|
|
73
75
|
|
74
76
|
# Rewrite the method that creates tables to easily accept extra options
|
75
77
|
def create_table(table_name, **options, &block)
|
76
|
-
|
77
|
-
|
78
|
-
options[:temporary] = td
|
78
|
+
options[:id] = false if options[:inherits].present? &&
|
79
|
+
options[:primary_key].blank? && options[:id].blank?
|
79
80
|
|
80
81
|
super table_name, **options, &block
|
81
82
|
end
|
82
83
|
|
83
84
|
private
|
84
85
|
|
85
|
-
# This waits for the second call to really return the table definition
|
86
|
-
def create_table_definition(*args, **options) # :nodoc:
|
87
|
-
if !args.second.kind_of?(TableDefinition)
|
88
|
-
TableDefinition.new(*args, **options)
|
89
|
-
else
|
90
|
-
args.second
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
86
|
def quote_enum_values(name, values, options)
|
95
87
|
prefix = options[:prefix]
|
96
88
|
prefix = name if prefix === true
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Torque
|
2
4
|
module PostgreSQL
|
3
5
|
module Arel
|
@@ -22,6 +24,8 @@ module Torque
|
|
22
24
|
}.freeze
|
23
25
|
|
24
26
|
INFLIX_OPERATION.each do |operator_name, operator|
|
27
|
+
next if nodes.const_defined?(operator_name)
|
28
|
+
|
25
29
|
klass = Class.new(inflix)
|
26
30
|
klass.send(:define_method, :initialize) { |*args| super(operator, *args) }
|
27
31
|
|
@@ -31,7 +35,7 @@ module Torque
|
|
31
35
|
# Don't worry about quoting here, if the right side is something that
|
32
36
|
# doesn't need quoting, it will leave it as it is
|
33
37
|
Math.send(:define_method, operator_name.underscore) do |other|
|
34
|
-
klass.new(self,
|
38
|
+
klass.new(self, other)
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|