check if Rails exists for the rails support

This commit is contained in:
Seth Ladd 2009-06-08 11:48:15 -10:00
parent 7246801f57
commit 36f69ec332

View file

@ -1,52 +1,52 @@
# This file contains various hacks for Rails compatibility. # This file contains various hacks for Rails compatibility.
# To use, just require in environment.rb, like so:
#
# require 'couchrest/support/rails'
class Hash if defined?(Rails)
# Hack so that CouchRest::Document, which descends from Hash,
# doesn't appear to Rails routing as a Hash of options class Hash
def self.===(other) # Hack so that CouchRest::Document, which descends from Hash,
return false if self == Hash && other.is_a?(CouchRest::Document) # doesn't appear to Rails routing as a Hash of options
super def self.===(other)
return false if self == Hash && other.is_a?(CouchRest::Document)
super
end
end end
end
CouchRest::Document.class_eval do
CouchRest::Document.class_eval do # Need this when passing doc to a resourceful route
# Need this when passing doc to a resourceful route alias_method :to_param, :id
alias_method :to_param, :id
# Hack so that CouchRest::Document, which descends from Hash, # Hack so that CouchRest::Document, which descends from Hash,
# doesn't appear to Rails routing as a Hash of options # doesn't appear to Rails routing as a Hash of options
def is_a?(o) def is_a?(o)
return false if o == Hash return false if o == Hash
super super
end end
alias_method :kind_of?, :is_a? alias_method :kind_of?, :is_a?
# Gives extended doc a seamless logger # Gives extended doc a seamless logger
def logger def logger
ActiveRecord::Base.logger ActiveRecord::Base.logger
end
end end
end
CouchRest::CastedModel.class_eval do CouchRest::CastedModel.class_eval do
# The to_param method is needed for rails to generate resourceful routes. # The to_param method is needed for rails to generate resourceful routes.
# In your controller, remember that it's actually the id of the document. # In your controller, remember that it's actually the id of the document.
def id def id
return nil if base_doc.nil? return nil if base_doc.nil?
base_doc.id base_doc.id
end
alias_method :to_param, :id
end end
alias_method :to_param, :id
end
require Pathname.new(File.dirname(__FILE__)).join('..', 'validation', 'validation_errors') require Pathname.new(File.dirname(__FILE__)).join('..', 'validation', 'validation_errors')
CouchRest::Validation::ValidationErrors.class_eval do CouchRest::Validation::ValidationErrors.class_eval do
# Returns the total number of errors added. Two errors added to the same attribute will be counted as such. # Returns the total number of errors added. Two errors added to the same attribute will be counted as such.
# This method is called by error_messages_for # This method is called by error_messages_for
def count def count
errors.values.inject(0) { |error_count, errors_for_attribute| error_count + errors_for_attribute.size } errors.values.inject(0) { |error_count, errors_for_attribute| error_count + errors_for_attribute.size }
end
end end
end end