Developer FAQ

pages and page terms

How does page terms match SQL query work?

see comments in

  • lib/path_finder/mysql/builder.rb
  • app/models/page_extension/index.rb

user memberships/relationships

How does relationship ids caches work? When do they get cleared?

The id caches are configured to be initialized using ‘initialized_by’. For example:

initialized_by :update_contacts_cache, :friend_id_cache, :foe_id_cache

In this example update_contacts_cache will get called whenever we request the contents of friend_id_cache but it is null.

How is it updated? To update an id cache, you just set its value to null. The correct values will get lazily updated when they are actually used (by whatever method is specified the initialized_by line).

Specifically, the method User#clear_cache is called a lot, but it doesn’t really matter. Anyone can set the cache to null.

For more information, read the comments in:

  • app/models/user_extension/cache.rb

porting to rails 2.3

How does the tools / mods engine stuff work?

There is a ton of documentation on this in doc and mods/README and tools/README and lib/extention/engines.rb.

translation

What’s the workflow here?

this is documented elsewhere. anyone find it?

How do translated terms get merged back from we.r.n gibberize?

  1. .yml files are exported from we.riseup.net/gibberize (just click the button)
  2. all the .yml files (except for english and custom) are copied to my local git repo.
  3. i check these files in.

deploy

How is an initial deploy set up?

  1. the vserver is setup up. all this happens in puppet: vserver is created, and you have been given access to the user crabgrass (via authorized_keys), the deploy directory is created.
  2. create a deploy.rb file in config. There is an example one in the distro, and many examples in the various deploy branches.

Then, run this once:

cap deploy:setup

From then on, you should be able to just run:

cap deploy

In order to deploy.

How do i configure apache for use with crabgrass? Does micah know?

yes, this is all managed by puppet. the actual configurations look something like these apache passenger rails.