public
Description: Store translation strings in the database allowing you to update text without requiring a code deploy.
Clone URL: git://github.com/caring/gibberish_db.git
dustin (author)
Tue Mar 25 15:57:36 -0700 2008
commit  2d188fae1f99192018a155832ba99f87aa618f58
tree    82a866a4cdabb62d3e12cfa3a6b8ede0f0e0219b
parent  a219b883151f8d57b02eb72c9009a3d7e638c587
name age message
file README Wed Mar 19 22:13:32 -0700 2008 putting gibberish_db up on git hub [chriseppstein]
file Rakefile Wed Mar 19 22:13:32 -0700 2008 putting gibberish_db up on git hub [chriseppstein]
directory ext/ Wed Mar 19 23:09:37 -0700 2008 controller, javascript to enable inline editing... [chriseppstein]
file init.rb Wed Mar 19 22:13:32 -0700 2008 putting gibberish_db up on git hub [chriseppstein]
file install.rb Wed Mar 19 22:13:32 -0700 2008 putting gibberish_db up on git hub [chriseppstein]
directory lib/ Tue Mar 25 15:57:36 -0700 2008 Some formatting cleanup. [dustin]
directory tasks/ Wed Mar 19 22:13:32 -0700 2008 putting gibberish_db up on git hub [chriseppstein]
directory test/ Wed Mar 19 22:13:32 -0700 2008 putting gibberish_db up on git hub [chriseppstein]
file uninstall.rb Wed Mar 19 22:13:32 -0700 2008 putting gibberish_db up on git hub [chriseppstein]
README
GibberishDb
===========
This plugin adds database support to Gibberish (http://errtheblog.com/posts/55-ya-talkin-gibberish) allowing
you to store (and change) your strings in your database. This probably is a bad idea unless you have a copy-editor
who is always bugging you to change the text on your website. Strings are cached using acts_as_cached to minimize the
database impact.

Author:: Chris Eppstein (chris@eppsteins.net)
Copyright:: (c) Copyright 2008 Caring, Inc. All Rights Reserved.
License:: Released under the same licensing terms as Gibberish

== Installation
Migrate your database like so:
  def self.up
    create_table "languages" do |t|
      t.column :name, :string, :null => false, :limit => 15, :unique => true
    end
    create_table "translations" do |t|
      t.column :language_id, :integer, :null => false
      t.column :key, :string, :null => false, :limit => 100 #max length for a column used in an index in mysql
      t.column :value, :text
      t.column, :format, :string, :null => false, :default => "inline"
    end
    add_index :translations, [:language_id, :key], :name => :one_translation_per_language, :unique => true
  end
  
  def self.down
    drop_table "languages"
    drop_table "translations"
  end

Add this to your environment.rb:
  config.after_initialize do
    Gibberish.load_languages! rescue nil #if you don't rescue, you'll crash during migrations
  end
  
== Dependencies
* Gibberish (duh!)
* acts_as_cached (or cache_fu)

== Usage
Use is the same as before only the strings will come from your database now.

You can now use the following models:
* +Gibberish::Language+
* +Gibberish::Translation+

Translation cache is automatically expired after save, but if you add a new language, you'll need
to call +Gibberish.load_languages!+ again.