# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "aws-s3", :lib => "aws/s3"
- config.gem 'composite_primary_keys', :version => '2.2.2'
+ unless OSM_STATUS == :database_offline
+ config.gem 'composite_primary_keys', :version => '2.2.2'
+ end
config.gem 'libxml-ruby', :version => '>= 1.1.1', :lib => 'libxml'
config.gem 'rmagick', :lib => 'RMagick'
config.gem 'oauth', :version => '>= 0.3.6'
# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with 'rake db:sessions:create')
- config.action_controller.session_store = :sql_session_store
+ unless OSM_STATUS == :database_offline
+ config.action_controller.session_store = :sql_session_store
+ end
# Use SQL instead of Active Record's schema dumper when creating the test database.
# This is necessary if your schema can't be completely dumped by the schema dumper,
-module ActiveRecord
- module ConnectionAdapters
- class AbstractAdapter
- protected
- alias_method :old_log, :log
-
- def log(sql, name)
- if block_given?
- old_log(sql, name) do
- yield
+if defined?(ActionRecord::ConnectionAdaptors::AbstractAdaptor)
+ module ActiveRecord
+ module ConnectionAdapters
+ class AbstractAdapter
+ protected
+ alias_method :old_log, :log
+
+ def log(sql, name)
+ if block_given?
+ old_log(sql, name) do
+ yield
+ end
+ else
+ old_log(sql, name)
+ end
+ rescue ActiveRecord::StatementInvalid => ex
+ if ex.message =~ /^OSM::APITimeoutError: /
+ raise OSM::APITimeoutError.new
+ elsif ex.message =~ /^Timeout::Error: /
+ raise Timeout::Error.new("time's up!")
+ else
+ raise
end
- else
- old_log(sql, name)
- end
- rescue ActiveRecord::StatementInvalid => ex
- if ex.message =~ /^OSM::APITimeoutError: /
- raise OSM::APITimeoutError.new
- elsif ex.message =~ /^Timeout::Error: /
- raise Timeout::Error.new("time's up!")
- else
- raise
end
end
end
-module ActiveRecord
- module ConnectionAdapters
- class PostgreSQLAdapter
- def pk_and_sequence_for(table)
- # First try looking for a sequence with a dependency on the
- # given table's primary key.
- result = query(<<-end_sql, 'PK and serial sequence')[0]
- SELECT attr.attname, seq.relname
- FROM pg_class seq,
- pg_attribute attr,
- pg_depend dep,
- pg_namespace name,
- pg_constraint cons
- WHERE seq.oid = dep.objid
- AND seq.relkind = 'S'
- AND attr.attrelid = dep.refobjid
- AND attr.attnum = dep.refobjsubid
- AND attr.attrelid = cons.conrelid
- AND attr.attnum = cons.conkey[1]
- AND cons.contype = 'p'
- AND dep.classid = '"pg_class"'::regclass
- AND dep.refclassid = '"pg_class"'::regclass
- AND dep.refobjid = '#{quote_table_name(table)}'::regclass
- end_sql
-
- if result.nil? or result.empty?
- # If that fails, try parsing the primary key's default value.
- # Support the 7.x and 8.0 nextval('foo'::text) as well as
- # the 8.1+ nextval('foo'::regclass).
- result = query(<<-end_sql, 'PK and custom sequence')[0]
- SELECT attr.attname,
- CASE
- WHEN split_part(def.adsrc, '''', 2) ~ '.' THEN
- substr(split_part(def.adsrc, '''', 2),
- strpos(split_part(def.adsrc, '''', 2), '.')+1)
- ELSE split_part(def.adsrc, '''', 2)
- END
- FROM pg_class t
- JOIN pg_attribute attr ON (t.oid = attrelid)
- JOIN pg_attrdef def ON (adrelid = attrelid AND adnum = attnum)
- JOIN pg_constraint cons ON (conrelid = adrelid AND adnum = conkey[1])
- WHERE t.oid = '#{quote_table_name(table)}'::regclass
- AND cons.contype = 'p'
- AND def.adsrc ~* 'nextval'
+if defined?(ActionRecord::ConnectionAdaptors::PostgreSQLAdaptor)
+ module ActiveRecord
+ module ConnectionAdapters
+ class PostgreSQLAdapter
+ def pk_and_sequence_for(table)
+ # First try looking for a sequence with a dependency on the
+ # given table's primary key.
+ result = query(<<-end_sql, 'PK and serial sequence')[0]
+ SELECT attr.attname, seq.relname
+ FROM pg_class seq,
+ pg_attribute attr,
+ pg_depend dep,
+ pg_namespace name,
+ pg_constraint cons
+ WHERE seq.oid = dep.objid
+ AND seq.relkind = 'S'
+ AND attr.attrelid = dep.refobjid
+ AND attr.attnum = dep.refobjsubid
+ AND attr.attrelid = cons.conrelid
+ AND attr.attnum = cons.conkey[1]
+ AND cons.contype = 'p'
+ AND dep.classid = '"pg_class"'::regclass
+ AND dep.refclassid = '"pg_class"'::regclass
+ AND dep.refobjid = '#{quote_table_name(table)}'::regclass
end_sql
+
+ if result.nil? or result.empty?
+ # If that fails, try parsing the primary key's default value.
+ # Support the 7.x and 8.0 nextval('foo'::text) as well as
+ # the 8.1+ nextval('foo'::regclass).
+ result = query(<<-end_sql, 'PK and custom sequence')[0]
+ SELECT attr.attname,
+ CASE
+ WHEN split_part(def.adsrc, '''', 2) ~ '.' THEN
+ substr(split_part(def.adsrc, '''', 2),
+ strpos(split_part(def.adsrc, '''', 2), '.')+1)
+ ELSE split_part(def.adsrc, '''', 2)
+ END
+ FROM pg_class t
+ JOIN pg_attribute attr ON (t.oid = attrelid)
+ JOIN pg_attrdef def ON (adrelid = attrelid AND adnum = attnum)
+ JOIN pg_constraint cons ON (conrelid = adrelid AND adnum = conkey[1])
+ WHERE t.oid = '#{quote_table_name(table)}'::regclass
+ AND cons.contype = 'p'
+ AND def.adsrc ~* 'nextval'
+ end_sql
+ end
+
+ # [primary_key, sequence]
+ [result.first, result.last]
+ rescue
+ nil
end
-
- # [primary_key, sequence]
- [result.first, result.last]
- rescue
- nil
end
end
end