Skip to content

Instantly share code, notes, and snippets.

@roovo
Created March 10, 2009 20:37
Show Gist options
  • Save roovo/77117 to your computer and use it in GitHub Desktop.
Save roovo/77117 to your computer and use it in GitHub Desktop.
# **********************************************************************
# *** with load_classes_with_requirements as per current merb source ***
# **********************************************************************
# --------------------------------------------------------------------------------------------
# The datamapper models I've been having probs with
# admin_entered_new_membership.rb
puts "loading AdminEnteredNewMembership"
class AdminEnteredNewMembership < MembershipApplication
include DataMapper::Resource
end
# admin_entered_renewal.rb
puts "loading AdminEnteredRenewal"
class AdminEnteredRenewal < MembershipApplication
include DataMapper::Resource
end
# membership_application.rb
puts "loading MembershipApplication"
class MembershipApplication
include DataMapper::Resource
include MembershipApplicationBoatStoragePaymentForm
end
# membership_application_boat_storage_form.rb
puts "loading MembershipApplicationBoatStoragePaymentForm"
module MembershipApplicationBoatStoragePaymentForm
end
# --------------------------------------------------------------------------------------------
# load_classes_with_requirements as it is, but printing debug info
def load_classes_with_requirements(klasses)
klasses.uniq!
while klasses.size > 0
puts "KLASSES TO LOAD: #{klasses.inspect}"
# Note size to make sure things are loading
size_at_start = klasses.size
# List of failed classes
failed_classes = []
# Map classes to exceptions
error_map = {}
klasses.each do |klass|
puts "KLASS BEING LOADED: #{klass}"
klasses.delete(klass)
begin
load_file klass
rescue NameError => ne
error_map[klass] = ne
failed_classes.push(klass)
end
end
puts "KLASSES AFTER: #{klasses.inspect}"
puts "FAILED KLASSES AFTER: #{failed_classes.inspect}"
......
# --------------------------------------------------------------------------------------------
# When I run the merb app:
DEBUG=true bin/merb -i
# I get the following output:
# <snipedy snip>
# ~ Loading: Merb::BootLoader::LoadClasses
# ~ Parent pid: 10084
# loading AdminEnteredNewMembership
# loading AdminEnteredRenewal
# loading MembershipApplication
# loading MembershipApplicationBoatStoragePaymentForm
# --------------------------------------------------------------------------------------------
# KLASSES TO LOAD:
# ["/Users/rupert/Sites/home/merb/apsc_new/app/models/mobile_phone_number.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/membership_application.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/home_postal_address.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/home_phone_number.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/boat_storage_payment_form.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_renewal.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_new_membership.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_boat_storage_payment_form.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/a_renewal.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/a_online_application.rb"]
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/mobile_phone_number.rb
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/home_postal_address.rb
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/boat_storage_payment_form.rb
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_new_membership.rb
# loading AdminEnteredNewMembership
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/a_renewal.rb
# KLASSES AFTER:
# ["/Users/rupert/Sites/home/merb/apsc_new/app/models/membership_application.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/home_phone_number.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_renewal.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_boat_storage_payment_form.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/a_online_application.rb"]
# FAILED KLASSES AFTER:
# ["/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_new_membership.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/a_renewal.rb"]
# --------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------
# KLASSES TO LOAD:
# ["/Users/rupert/Sites/home/merb/apsc_new/app/models/membership_application.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/home_phone_number.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_renewal.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_boat_storage_payment_form.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/a_online_application.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_new_membership.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/a_renewal.rb"]
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/membership_application.rb
# loading MembershipApplication
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_renewal.rb
# loading AdminEnteredRenewal
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/a_online_application.rb
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/a_renewal.rb
# KLASSES AFTER:
# ["/Users/rupert/Sites/home/merb/apsc_new/app/models/home_phone_number.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_boat_storage_payment_form.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_new_membership.rb"]
# FAILED KLASSES AFTER: []
# --------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------
# KLASSES TO LOAD:
# ["/Users/rupert/Sites/home/merb/apsc_new/app/models/home_phone_number.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_boat_storage_payment_form.rb",
# "/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_new_membership.rb"]
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/home_phone_number.rb
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_new_membership.rb
# loading AdminEnteredNewMembership
# KLASSES AFTER: ["/Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_boat_storage_payment_form.rb"]
# FAILED KLASSES AFTER: []
# KLASS BEING LOADED: /Users/rupert/Sites/home/merb/apsc_new/app/models/admin_entered_boat_storage_payment_form.rb
# KLASSES AFTER: []
# FAILED KLASSES AFTER: []
# --------------------------------------------------------------------------------------------
# <snipedy snip>
# Then the problem is manifesting itself when at the merb irb prompt:
p MembershipApplication.properties
#<PropertySet:{#<Property:MembershipApplication:id>,#<Property:MembershipApplication:type>,#<Property:MembershipApplication:member_id>,#<Property:MembershipApplication:status>,#<Property:MembershipApplication:year>,#<Property:MembershipApplication:member_type>,#<Property:MembershipApplication:ap_connection>,#<Property:MembershipApplication:ap_connection_other>,#<Property:MembershipApplication:atlas_status>,#<Property:MembershipApplication:created_on>}>
p AdminEnteredRenewal.properties
#<PropertySet:{#<Property:AdminEnteredRenewal:id>,#<Property:AdminEnteredRenewal:type>,#<Property:AdminEnteredRenewal:member_id>,#<Property:AdminEnteredRenewal:status>,#<Property:AdminEnteredRenewal:year>,#<Property:AdminEnteredRenewal:member_type>,#<Property:AdminEnteredRenewal:ap_connection>,#<Property:AdminEnteredRenewal:ap_connection_other>,#<Property:AdminEnteredRenewal:atlas_status>,#<Property:AdminEnteredRenewal:created_on>}>
p AdminEnteredNewMembership.properties
#<PropertySet:{#<Property:AdminEnteredNewMembership:status>}>
# this is bad - AdminEnteredNewMembership should have the properties inherited from MembershipApplication
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment