<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>config/nex3.yml</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,6 @@
 = Nex3 Blogging Engine
 
-Yes, I named it after my own online alias.
+Yes, I named it after my own alias.
 I didn't anticipate that other people would want to use it.
 In fact, as far as I know, only one other person _does_ want to use it.
 If I'm wrong and you're not that person (you'll know if you are),
@@ -15,7 +15,7 @@ but getting it set up will require mucking around in script/console.
 If you want to change the behavior, hack the source.
 That sort of thing.
 
-So what's cool about Nex3? Hell if I know.
+So what's cool about this engine? I really don't know.
 I pretty much made it for fun.
 I haven't used other blogging frameworks,
 but to the best of my knowledge this doesn't have any features they don't.
@@ -23,7 +23,7 @@ I guess you could call it minimalistic,
 but I'm not really going out of my way to keep it simple.
 I pretty much just add features as I want them.
 
-At the moment I'm writing this, Nex3 comes with a few reasonably useful features.
+At the moment I'm writing this, it does comes with a few reasonably useful features.
 For those curious for a brief rundown, I'll list them here,
 although I don't by any means guarantee that this list will be kept up-to-date.
 
@@ -100,12 +100,15 @@ like create new posts and muck with users and log out.
 At this point, you might want to click the users icon
 and give yourself a link and an email.
 
-Once that's all working, change the layout.
-I love you, but I worked hard on that layout,
-and I don't really want other folks using it.
-It ticks me off whenever I see two people using the same layout.
-Use the creativity your favorite deity or force of nature gave you.
-
 Once that's all done, start posting.
 If you're feeling particularly generous, link back to me.
 If not, well, at least enjoy the engine.
+
+== Configuration
+
+Most of the configuration is done by getting your hands dirty.
+Mess with the code, change up the layout, that sort of thing.
+
+However, for common stuff, there's config/nex3.yml.
+This contains some variables you can set.
+It should be pretty self-explanitory.</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -31,18 +31,18 @@ class Comment &lt; ActiveRecord::Base
   alias_method_chain :user, :anon
 
   def spam?
-    @spam = AkismetInstance.commentCheck(*akismet_info) if @spam.nil?
+    @spam = Nex3::Akismet.commentCheck(*akismet_info) if @spam.nil?
     @spam
   end
 
   def spam!
     @spam = true
-    AkismetInstance.submitSpam(*akismet_info)
+    Nex3::Akismet.submitSpam(*akismet_info)
   end
 
   def ham!
     @spam = false
-    AkismetInstance.submitHam(*akismet_info)
+    Nex3::Akismet.submitHam(*akismet_info)
   end
 
   private</diff>
      <filename>app/models/comment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,2 +1 @@
-akismet.yml
 deploy.rb</diff>
      <filename>config/.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -18,23 +18,24 @@ class ActionController::AbstractRequest
   end
 end
 
-# Load up global Akismet instance.
-# Config should be put in config/akismet.yml,
-# of the form:
-#
-#   blog: ...
-#   apikey: ...
-file = File.join(RAILS_ROOT, &quot;config&quot;, &quot;akismet.yml&quot;)
-if File.exists?(file)
-  conf = YAML.load(File.read(file))
-  AkismetInstance = Akismet.new(conf[&quot;apikey&quot;], conf[&quot;blog&quot;])
-else
-  class Fakismet &lt; Akismet
-    def initialize; super(&quot;&quot;, &quot;&quot;); end
-    def callAkismet(*whatever); false; end
+module Nex3
+  conf_loc = File.join(RAILS_ROOT, &quot;config&quot;, &quot;nex3.yml&quot;)
+  unless File.exists?(conf_loc)
+    Config = {}
+  else
+    Config = YAML.load(File.read(conf_loc))
   end
 
-  AkismetInstance = Fakismet.new
+  if akismet = Config['akismet']
+    Akismet = ::Akismet.new(akismet['apikey'], akismet['blog'])
+  else
+    class Fakismet &lt; ::Akismet
+      def initialize; super(&quot;&quot;, &quot;&quot;); end
+      def callAkismet(*whatever); false; end
+    end
+
+    Akismet = Fakismet.new
+  end
 end
 
 %w{codecloth syntax/lisp syntax/javascript}.each(&amp;method(:require))</diff>
      <filename>config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,14 +9,14 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version =&gt; 5) do
+ActiveRecord::Schema.define(:version =&gt; 6) do
 
   create_table &quot;comments&quot;, :force =&gt; true do |t|
     t.integer  &quot;user_id&quot;
-    t.integer  &quot;post_id&quot;
-    t.text     &quot;content&quot;,    :default =&gt; &quot;&quot;, :null =&gt; false
+    t.text     &quot;content&quot;,    :default =&gt; &quot;&quot;,                    :null =&gt; false
     t.datetime &quot;created_at&quot;
-    t.datetime &quot;updated_at&quot;
+    t.integer  &quot;post_id&quot;
+    t.datetime &quot;updated_at&quot;, :default =&gt; '2007-09-03 22:42:42'
   end
 
   create_table &quot;posts&quot;, :force =&gt; true do |t|</diff>
      <filename>db/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -138,49 +138,49 @@ describe Comment, &quot; with potentially spammy content&quot; do
   end
 
   it &quot;should check with Akismet when spam? is asked&quot; do
-    AkismetInstance.expects(:commentCheck).with(*@akismet_info).returns(true)
+    Nex3::Akismet.expects(:commentCheck).with(*@akismet_info).returns(true)
     @comment.should be_spam
   end
 
   it &quot;should cache a positive spam? result&quot; do
-    AkismetInstance.expects(:commentCheck).times(1).returns(true)
+    Nex3::Akismet.expects(:commentCheck).times(1).returns(true)
     @comment.should be_spam
     @comment.should be_spam
   end
 
   it &quot;should cache a negative spam? result&quot; do
-    AkismetInstance.expects(:commentCheck).times(1).returns(false)
+    Nex3::Akismet.expects(:commentCheck).times(1).returns(false)
     @comment.should_not be_spam
     @comment.should_not be_spam
   end
 
   it &quot;should notify Akismet when spam! is declared&quot; do
-    AkismetInstance.expects(:submitSpam).with(*@akismet_info)
+    Nex3::Akismet.expects(:submitSpam).with(*@akismet_info)
     @comment.spam!
   end
 
   it &quot;should cache a spam! declaration&quot; do
-    AkismetInstance.stubs(:submitSpam)
-    AkismetInstance.expects(:commentCheck).never
+    Nex3::Akismet.stubs(:submitSpam)
+    Nex3::Akismet.expects(:commentCheck).never
     @comment.spam!
     @comment.should be_spam
   end
 
   it &quot;should notify Akismet when ham! is declared&quot; do
-    AkismetInstance.expects(:submitHam).with(*@akismet_info)
+    Nex3::Akismet.expects(:submitHam).with(*@akismet_info)
     @comment.ham!
   end
 
   it &quot;should cache a ham! declaration&quot; do
-    AkismetInstance.stubs(:submitHam)
-    AkismetInstance.expects(:commentCheck).never
+    Nex3::Akismet.stubs(:submitHam)
+    Nex3::Akismet.expects(:commentCheck).never
     @comment.ham!
     @comment.should_not be_spam
   end
 
   it &quot;shouldn't validate if it's spammy&quot; do
     @comment = Comment.new(@comment.attributes)
-    AkismetInstance.stubs(:submitSpam)
+    Nex3::Akismet.stubs(:submitSpam)
     @comment.spam!
     @comment.should have(1).error_on(:content)
   end</diff>
      <filename>spec/models/comment_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>22d60bde261287a3713deb67fe20ea9abaf67f83</id>
    </parent>
  </parents>
  <author>
    <name>Nathan Weizenbaum</name>
    <email>nex342@gmail.com</email>
  </author>
  <url>http://github.com/nex3/nex3-s-blog-engine/commit/b140ee4ee2db40b2cb14356f923a2da58fdb319a</url>
  <id>b140ee4ee2db40b2cb14356f923a2da58fdb319a</id>
  <committed-date>2007-12-14T03:31:56-08:00</committed-date>
  <authored-date>2007-12-14T03:31:56-08:00</authored-date>
  <message>Moving configuration to a more generic file.</message>
  <tree>edc9c7384212c893e9ad957e2294e9423205638d</tree>
  <committer>
    <name>Nathan Weizenbaum</name>
    <email>nex342@gmail.com</email>
  </committer>
</commit>
