#if forum /* May 14, 07:05 */
> Hi all
> 
> I'd like to begin with clean development of engines that I will be able 
> to re-use and give to the Rails community.
> Now my question: what should I always keep in mind when writing code for 
> an engine? I'm thinking here about stuff like that I shouldn't hard-code 
> table names etc.

I'll dive in on this last question:
There's no need to hard-code table names, have a look at:
user_engine/lib/user_engine.rb, notably this part:

  # The names of the new Role and Permission tables
  if ActiveRecord::Base.pluralize_table_names
    config :role_table, "roles"
    config :permission_table, "permissions"
  else
    config :role_table, "role"
    config :permission_table, "permission"
  end

IIUC you could override the actual table names by placing directives
into $RAILS_ROOT/config/environment.rb, like this:

module UserEngine
        config :role_table, "my_roles"
        config :permission_table, "my_perms"
end


Then, when you actually come to use the table names, say for example in
a JOIN thats tucked away in your code, you can pick out the table name:

        UserEngine.config(:role_table)

and use it like:
        :joins => "INNER JOIN #{UserEngine.config(:role_table)} ON " +
                "#{UserEngine.config(:role_table)}.somefield = " +
                " some_table.some_column"

And if you want the the class name, you could do:

        UserEngine.config(:role_table).classify

which would pick out "Role"

using these techniques, i believe you can decouple the table names and
classes from your code.

Although, the class names may still conflict with other ones, if you
choose generic names.

HTH at least a little.



-- 
keys:  http://codex.net/gpg.asc 

 [a] The Japanese eat very little fat and suffer fewer heart attacks than 
 the British or Americans.

 [b] On the other hand, the French eat a lot of fat and also suffer fewer
 heart attacks than the British or Americans.

 [c] Conclusion: Eat what you like. It's speaking English that kills you.

_______________________________________________
engine-users mailing list
[email protected]
http://lists.rails-engines.org/listinfo.cgi/engine-users-rails-engines.org

Reply via email to