Commit 07a6ad7

mo khan <mo@mokhan.ca>
2013-05-22 02:15:47
move classes from spec file to lib folder
1 parent 7b1c3ee
lib/humble.rb
@@ -1,5 +1,75 @@
 require "humble/version"
 
 module Humble
-  # Your code goes here...
+  class Configuration
+    attr_reader :connection_string
+
+    def initialize(connection_string)
+      @mappings = []
+      @connection_string = connection_string
+    end
+
+    def add(mapping)
+      @mappings.push(mapping)
+    end
+
+    def build_session_factory
+      SessionFactory.new(self)
+    end
+
+    def mapping_for(item)
+      @mappings.find do |mapping|
+        mapping.is_for?(item)
+      end
+    end
+  end
+
+  class SessionFactory
+    def initialize(configuration)
+      @configuration = configuration
+    end
+
+    def create_session
+      Session.new(self, @configuration)
+    end
+
+    def create_connection
+      Sequel.connect(@configuration.connection_string)
+    end
+  end
+
+  class Session
+    def initialize(connection_factory, mapper_registry)
+      @connection_factory = connection_factory
+      @mapper_registry = mapper_registry
+    end
+
+    def begin_transaction(&block)
+      create_connection.transaction do
+        block.call(self)
+      end
+    end
+
+    def save(item)
+      mapping_for(item).save_using(create_connection, item)
+    end
+
+    def find_all(clazz)
+      mapping_for(clazz).find_all_using(create_connection, clazz)
+    end
+
+    private
+
+    attr_reader :connection_factory, :mapper_registry
+
+    def create_connection
+      @connection ||= connection_factory.create_connection
+    end
+
+    def mapping_for(item)
+      mapper_registry.mapping_for(item)
+    end
+  end
+
+
 end
spec/example_spec.rb
@@ -1,77 +1,7 @@
 require "rubygems"
 require 'sequel'
 require "sqlite3"
-
-class Configuration
-  attr_reader :connection_string
-
-  def initialize(connection_string)
-    @mappings = []
-    @connection_string = connection_string
-  end
-
-  def add(mapping)
-    @mappings.push(mapping)
-  end
-
-  def build_session_factory
-    SessionFactory.new(self)
-  end
-
-  def mapping_for(item)
-    @mappings.find do |mapping|
-      mapping.is_for?(item)
-    end
-  end
-end
-
-class SessionFactory
-  def initialize(configuration)
-    @configuration = configuration
-  end
-
-  def create_session
-    Session.new(self, @configuration)
-  end
-
-  def create_connection
-    Sequel.connect(@configuration.connection_string)
-  end
-end
-
-class Session
-  def initialize(connection_factory, mapper_registry)
-    @connection_factory = connection_factory
-    @mapper_registry = mapper_registry
-  end
-
-  def begin_transaction(&block)
-    create_connection.transaction do
-      block.call(self)
-    end
-  end
-
-  def save(item)
-    mapping_for(item).save_using(create_connection, item)
-  end
-
-  def find_all(clazz)
-    mapping_for(clazz).find_all_using(create_connection, clazz)
-  end
-
-  private
-
-  attr_reader :connection_factory, :mapper_registry
-
-  def create_connection
-    @connection ||= connection_factory.create_connection
-  end
-
-  def mapping_for(item)
-    mapper_registry.mapping_for(item)
-  end
-end
-
+require_relative '../lib/humble.rb'
 
 class Movie
   attr_reader :name
@@ -81,10 +11,7 @@ class Movie
   end
 end
 
-class DatabaseMapping
-end
-
-class MovieMapping < DatabaseMapping
+class MovieMapping
   def is_for?(item)
     item == Movie || item.is_a?(Movie)
   end
@@ -100,7 +27,6 @@ class MovieMapping < DatabaseMapping
   def run(map)
     map.table :movies
   end
-
 end
 
 
@@ -120,7 +46,7 @@ describe "orm" do
   end
 
   it "should work like this" do
-    configuration = Configuration.new(connection_string)
+    configuration = Humble::Configuration.new(connection_string)
     configuration.add(MovieMapping.new)
     session_factory = configuration.build_session_factory
     session = session_factory.create_session
humble.gemspec
@@ -17,7 +17,9 @@ Gem::Specification.new do |spec|
   spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
   spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
   spec.require_paths = ["lib"]
+  spec.requred_ruby_version = '>= 2.0.0'
 
+  spec.add_dependency "sequel"
   spec.add_development_dependency "bundler", "~> 1.3"
   spec.add_development_dependency "rake"
   spec.add_development_dependency 'rspec'