lib/cream/role.rb in cream-0.7.3 vs lib/cream/role.rb in cream-0.7.5
- old
+ new
@@ -5,20 +5,46 @@
module Role
def self.available
return Cream.available_roles if Cream.available_roles.present?
return Cream.roles if Cream.roles.present?
- if defined? ::Role
- ::Role.all.map(&:name).to_symbols
- elsif defined? ::User
- ::User.roles.to_symbols
- else
- raise %q{Available roles could not be determined. Please do either of the following:\n
+
+ puts "Cream didn't have available roles configured, now trying alternatives: User and Role"
+
+ return try_role if try_role
+ return try_user if try_user
+
+ raise %q{Available roles could not be determined. Please do either of the following:\n
1) Create a Cream.setup block
2) Set Cream.available_roles explicitly
3) Create Role instances and ensure a call to Role.all returns them
4) Set User.roles explicitly
}
+ end
+
+ protected
+
+ def self.try_user
+ if !defined? ::User
+ puts "No User defined"
+ return nil
end
+
+ puts "User has roles available?"
+ return ::User.roles.to_symbols if ::User.respond_to?(:roles)
+ puts "User didn't have a #roles class method"
+ nil
end
+
+ def self.try_role
+ if !defined? ::Role
+ puts "No Role defined"
+ return nil
+ end
+
+ puts "Role has roles available?"
+ return ::Role.all.map(&:name).to_symbols if ::Role.respond_to?(:all)
+ puts "Role didn't have an #all class method"
+ nil
+ end
end
end
\ No newline at end of file