<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,2 +1,3 @@
+require 'ezcrypto'
 require 'lucifer'
 ActiveRecord::Base.class_eval { include Lucifer }
\ No newline at end of file</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,9 +6,9 @@ module Lucifer
   module ClassMethods
     def encrypt_attributes
       return if self.included_modules.include? Lucifer::InstanceMethods
-      __send__ :include, Lucifer::InstanceMethods
+      send :include, Lucifer::InstanceMethods
       
-      cattr_accessor :encrypted_columns, :decrypted_columns
+      cattr_accessor :encrypted_columns, :decrypted_columns, :key
       
       self.encrypted_columns = columns.select{|col| col.type == :binary &amp;&amp; col.name =~ /_b$/}.collect(&amp;:name)  
       self.decrypted_columns = encrypted_columns.collect{|col| col.chomp '_b' }
@@ -16,37 +16,36 @@ module Lucifer
       
       before_save :encrypt_columns
       
-      class_eval do 
-        # Have to call it like this for performance reasons
-        # http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
-        def after_initialize
-          decrypt_columns
-        end
-      end
+      secret   = YAML.load_file(Rails.root + '/config/key.yml')[Rails.env].symbolize_keys
+      self.key = EzCrypto::Key.with_password secret[:key], secret[:salt]
     end
     
     def encrypt(value)
-      value
+      key.encrypt value
     end
     
     def decrypt(value)
-      value
+      key.decrypt value
     end
   end
   
   
-  
   module InstanceMethods
-    
     def encrypt_columns
       self.class.decrypted_columns.each do |col|
-        __send__ &quot;#{col}_b=&quot;, self.class.encrypt(col)
+        send &quot;#{col}_b=&quot;, self.class.encrypt(eval(col))
       end
     end
     
+    # Have to call it like this for performance reasons
+    # http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
+    def after_find
+      decrypt_columns
+    end
+    
     def decrypt_columns
       self.class.encrypted_columns.each do |col|
-        __send__ &quot;#{col.chomp '_b'}=&quot;, self.class.decrypt(col)
+        send &quot;#{col.chomp '_b'}=&quot;, self.class.decrypt(eval(col))
       end
     end
     </diff>
      <filename>lib/lucifer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,10 +13,6 @@ require File.join(File.dirname(__FILE__), 'person')
 
 class LuciferTest &lt; Test::Unit::TestCase
 
-  def person_attributes
-    {:name=&gt;'Alice', :ssn=&gt;'000-00-0000'}
-  end
-
   def test_encrypt_proper_columns
     assert_equal ['ssn_b'], Person.encrypted_columns
   end
@@ -31,16 +27,17 @@ class LuciferTest &lt; Test::Unit::TestCase
   end
   
   def test_encrypt_column_before_save
-    person = Person.new person_attributes
+    person = Person.new :name=&gt;'Alice', :ssn=&gt;'000-00-0000'
     assert_nil person.ssn_b
     person.save
     assert person.ssn_b
+    assert_not_equal '000-00-0000', person.ssn_b
   end
   
   def test_decrypt_columns_on_load
-    id = Person.create(person_attributes).id
+    id = Person.create(:name=&gt;'Bob', :ssn=&gt;'999-99-9999').id
     person = Person.find id
-    assert person.ssn
+    assert_equal '999-99-9999', person.ssn
   end
   
 end
\ No newline at end of file</diff>
      <filename>test/lucifer_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>968f25773eac76419882896aa4caced1fd4d7b64</id>
    </parent>
  </parents>
  <author>
    <name>Jordan McKible</name>
    <email>jordan@mckible.com</email>
  </author>
  <url>http://github.com/jmckible/lucifer/commit/ee0a1009ced0ad0e1c3cfdf752a8810fdf767a4c</url>
  <id>ee0a1009ced0ad0e1c3cfdf752a8810fdf767a4c</id>
  <committed-date>2008-06-17T12:07:06-07:00</committed-date>
  <authored-date>2008-06-17T12:07:06-07:00</authored-date>
  <message>Wire up EzCrypto</message>
  <tree>d40df89a2f1b2f1d0ca9bc823ea1480c11a0b91c</tree>
  <committer>
    <name>Jordan McKible</name>
    <email>jordan@mckible.com</email>
  </committer>
</commit>
