active_wrapper 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/MIT-LICENSE ADDED
@@ -0,0 +1,18 @@
1
+ Copyright (c) 2009 Winton Welsh
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7
+ the Software, and to permit persons to whom the Software is furnished to do so,
8
+ subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,91 @@
1
+ ActiveWrapper
2
+ =============
3
+
4
+ Wraps ActiveRecord and Logger for use in non-Rails environments.
5
+
6
+ Setup
7
+ -----
8
+
9
+ <pre>
10
+ sudo gem install active_wrapper
11
+ </pre>
12
+
13
+ Usage
14
+ -----
15
+
16
+ <pre>
17
+ require 'rubygems'
18
+ require 'active_wrapper'
19
+
20
+ $db, $log, $mail = ActiveWrapper.setup(
21
+ :base => File.dirname(__FILE__),
22
+ :env => 'development',
23
+ :log => 'custom',
24
+ :stdout => true
25
+ )
26
+
27
+ $db.drop_db
28
+ $db.create_db
29
+ $db.establish_connection
30
+ $db.generate_migration('my_migration')
31
+ $db.migrate('001')
32
+ $db.migrate_reset
33
+ $log.info('log this')
34
+ $log.clear
35
+ $mail.deliver(:from => 'me@me.com', :to => 'you@you.com', :subject => 'subject', :body => 'body')
36
+ </pre>
37
+
38
+ <code>ActiveWrapper</code> looks for the following files within the <code>:base</code> directory:
39
+
40
+ * <b>config/database.yml</b>
41
+ * <b>config/mail.yml</b>
42
+ * <b>db/migrate/*.rb</b>
43
+
44
+ The <code>:env</code> option is <code>"development"</code> by default.
45
+
46
+ Logger
47
+ ------
48
+
49
+ In the previous example, the log is stored in <b>log/custom.log</b>.
50
+
51
+ If no <code>:log</code> name is specified, the <code>:env</code> option is used for the log name.
52
+
53
+ You may also set <code>:log</code> to false to disable logging entirely.
54
+
55
+ Setting <code>:stdout</code> to true causes stdout and stderr to redirect to the logger. It is false by default.
56
+
57
+ Mailer
58
+ ------
59
+
60
+ Your <b>mail.yml</b> should look something like this:
61
+
62
+ <pre>
63
+ development:
64
+ smtp:
65
+ address: smtp.gmail.com
66
+ authentication: :plain
67
+ domain: gmail.com
68
+ password: password
69
+ port: 587
70
+ enable_starttls_auto: true
71
+ user_name: user@gmail.com
72
+ </pre>
73
+
74
+ This file is optional.
75
+
76
+ Rakefile
77
+ --------
78
+
79
+ Add this to your project's <b>Rakefile</b> for database migration and log tasks:
80
+
81
+ <pre>
82
+ require 'rubygems'
83
+ require 'rake'
84
+ require 'active_wrapper/tasks'
85
+
86
+ ActiveWrapper::Tasks.new(:log => 'custom') do
87
+ # Put stuff you would normally put in the environment task here
88
+ end
89
+ </pre>
90
+
91
+ Pass the same options to <code>ActiveWrapper::Tasks.new</code> as you would <code>ActiveWrapper.new</code>.
data/Rakefile ADDED
@@ -0,0 +1,54 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/gempackagetask'
4
+ require 'spec/rake/spectask'
5
+ require 'gemspec'
6
+
7
+ desc "Generate gemspec"
8
+ task :gemspec do
9
+ File.open("#{Dir.pwd}/#{GEM_NAME}.gemspec", 'w') do |f|
10
+ f.write(GEM_SPEC.to_ruby)
11
+ end
12
+ end
13
+
14
+ desc "Install gem"
15
+ task :install do
16
+ Rake::Task['gem'].invoke
17
+ `sudo gem uninstall #{GEM_NAME} -x`
18
+ `sudo gem install pkg/#{GEM_NAME}*.gem`
19
+ `rm -Rf pkg`
20
+ end
21
+
22
+ desc "Package gem"
23
+ Rake::GemPackageTask.new(GEM_SPEC) do |pkg|
24
+ pkg.gem_spec = GEM_SPEC
25
+ end
26
+
27
+ desc "Setup project"
28
+ task :setup do
29
+ name = File.basename(Dir.pwd)
30
+ `rm -Rf .git`
31
+ begin
32
+ dir = Dir['**/gem_template*']
33
+ from = dir.pop
34
+ if from
35
+ rb = from.include?('.rb')
36
+ to = File.dirname(from) + "/#{name}#{'.rb' if rb}"
37
+ FileUtils.mv(from, to)
38
+ end
39
+ end while dir.length > 0
40
+ Dir["**/*"].each do |path|
41
+ next if path.include?('Rakefile')
42
+ if File.file?(path)
43
+ `sed -i "" 's/gem_template/#{name}/g' #{path}`
44
+ end
45
+ end
46
+ `git init`
47
+ end
48
+
49
+ desc "Run specs"
50
+ Spec::Rake::SpecTask.new do |t|
51
+ t.rcov = true
52
+ t.spec_opts = ["--format", "specdoc", "--colour"]
53
+ t.spec_files = FileList["spec/**/*_spec.rb"]
54
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{active_wrapper}
5
+ s.version = "0.2.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Winton Welsh"]
9
+ s.date = %q{2009-08-13}
10
+ s.email = %q{mail@wintoni.us}
11
+ s.extra_rdoc_files = ["README.markdown"]
12
+ s.files = ["active_wrapper.gemspec", "gemspec.rb", "lib", "lib/active_wrapper", "lib/active_wrapper/db.rb", "lib/active_wrapper/log.rb", "lib/active_wrapper/mail.rb", "lib/active_wrapper/tasks.rb", "lib/active_wrapper.rb", "MIT-LICENSE", "Rakefile", "README.markdown", "resources", "resources/migration.template", "spec", "spec/active_wrapper", "spec/active_wrapper/db_spec.rb", "spec/active_wrapper/log_spec.rb", "spec/example_project", "spec/example_project/config", "spec/example_project/config/database.yml", "spec/example_project/db", "spec/example_project/db/migrate", "spec/example_project/db/migrate/001_test.rb", "spec/example_project/Rakefile", "spec/spec.opts", "spec/spec_helper.rb"]
13
+ s.homepage = %q{http://github.com/winton/active_wrapper}
14
+ s.require_paths = ["lib"]
15
+ s.rubygems_version = %q{1.3.1}
16
+ s.summary = %q{Wraps ActiveRecord and Logger for use in non-Rails environments}
17
+
18
+ if s.respond_to? :specification_version then
19
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
20
+ s.specification_version = 2
21
+
22
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
23
+ s.add_runtime_dependency(%q<activerecord>, ["= 2.3.2"])
24
+ s.add_runtime_dependency(%q<actionmailer>, ["= 2.3.2"])
25
+ else
26
+ s.add_dependency(%q<activerecord>, ["= 2.3.2"])
27
+ s.add_dependency(%q<actionmailer>, ["= 2.3.2"])
28
+ end
29
+ else
30
+ s.add_dependency(%q<activerecord>, ["= 2.3.2"])
31
+ s.add_dependency(%q<actionmailer>, ["= 2.3.2"])
32
+ end
33
+ end
data/gemspec.rb ADDED
@@ -0,0 +1,23 @@
1
+ GEM_NAME = 'active_wrapper'
2
+ GEM_FILES = FileList['**/*'] - FileList[
3
+ 'coverage', 'coverage/**/*',
4
+ 'pkg', 'pkg/**/*',
5
+ 'spec/example_project/log', 'spec/example_project/log/*'
6
+ ]
7
+ GEM_SPEC = Gem::Specification.new do |s|
8
+ # == CONFIGURE ==
9
+ s.author = "Winton Welsh"
10
+ s.email = "mail@wintoni.us"
11
+ s.homepage = "http://github.com/winton/#{GEM_NAME}"
12
+ s.summary = "Wraps ActiveRecord and Logger for use in non-Rails environments"
13
+ # == CONFIGURE ==
14
+ s.add_dependency('activerecord', '=2.3.2')
15
+ s.add_dependency('actionmailer', '=2.3.2')
16
+ s.extra_rdoc_files = [ "README.markdown" ]
17
+ s.files = GEM_FILES.to_a
18
+ s.has_rdoc = false
19
+ s.name = GEM_NAME
20
+ s.platform = Gem::Platform::RUBY
21
+ s.require_path = "lib"
22
+ s.version = "0.2.0"
23
+ end
@@ -0,0 +1,101 @@
1
+ module ActiveWrapper
2
+ class Db
3
+
4
+ attr_reader :base, :config, :env
5
+
6
+ def initialize(options)
7
+ @base = options[:base]
8
+ if File.exists?(path = "#{base}/config/database.yml")
9
+ @config = YAML::load(File.open(path))
10
+ end
11
+ @env = options[:env].to_s
12
+ end
13
+
14
+ def connected?
15
+ ActiveRecord::Base.connected?
16
+ end
17
+
18
+ def create_db
19
+ establish_connection('database' => nil)
20
+ ActiveRecord::Base.connection.create_database config[env]['database']
21
+ establish_connection({})
22
+ end
23
+
24
+ def drop_db
25
+ establish_connection('database' => nil)
26
+ ActiveRecord::Base.connection.drop_database config[env]['database']
27
+ end
28
+
29
+ def establish_connection(options=nil)
30
+ if !connected? || options
31
+ config_clone = Marshal.load(Marshal.dump(config))
32
+ config_clone[env].merge!(options || {})
33
+ ActiveRecord::Base.configurations = config_clone
34
+ ActiveRecord::Base.establish_connection(env)
35
+ end
36
+ end
37
+
38
+ def migrate(version=nil)
39
+ redirect_stdout do
40
+ ActiveRecord::Migrator.migrate("#{base}/db/migrate", version)
41
+ end
42
+ end
43
+
44
+ def migrate_reset
45
+ redirect_stdout do
46
+ migrate(0)
47
+ migrate
48
+ end
49
+ end
50
+
51
+ def generate_migration(name=nil)
52
+ redirect_stdout do
53
+ raise "Please specify desired migration name with NAME=my_migration_name" unless name
54
+
55
+ migration_name = name.strip.chomp
56
+ migrations_path = "#{base}/db/migrate"
57
+ migrations_template = File.expand_path("#{File.dirname(__FILE__)}/../../resources/migration.template")
58
+
59
+ # Find the highest existing migration version or set to 1
60
+ if (existing_migrations = Dir[File.join(migrations_path, '*.rb')]).length > 0
61
+ version = File.basename(existing_migrations.sort.reverse.first)[/^(\d+)_/,1].to_i + 1
62
+ else
63
+ version = 1
64
+ end
65
+
66
+ # Read the contents of the migration template into string
67
+ migrations_template = File.read(migrations_template)
68
+
69
+ # Replace the migration name in template with the acutal one
70
+ migration_content = migrations_template.gsub('__migration_name__', migration_name.camelize)
71
+ migration_content = migration_content.gsub('__migration_table__', migration_name)
72
+
73
+ # Generate migration filename
74
+ migration_filename = "#{"%03d" % version}_#{migration_name}.rb"
75
+
76
+ # Write the migration
77
+ File.open(File.join(migrations_path, migration_filename), "w+") do |migration|
78
+ migration.puts migration_content
79
+ end
80
+
81
+ # Done!
82
+ puts "Successfully created migration #{migration_filename}"
83
+ end
84
+ end
85
+
86
+ def method_missing(method, *args)
87
+ ActiveRecord::Base.connection.send(method, *args)
88
+ end
89
+
90
+ def redirect_stdout(&block)
91
+ if env == 'test'
92
+ stdout = $stdout
93
+ $stdout = File.new('/dev/null', 'w')
94
+ end
95
+ yield
96
+ if env == 'test'
97
+ $stdout = stdout
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,39 @@
1
+ module ActiveWrapper
2
+ class Log
3
+
4
+ attr_reader :base, :log, :logger, :stdout
5
+
6
+ def initialize(options)
7
+ @base = options[:base]
8
+ @log = options[:log]
9
+ @stdout = options[:stdout]
10
+
11
+ return if @log == false
12
+
13
+ FileUtils.mkdir_p("#{base}/log")
14
+ file = File.open("#{base}/log/#{log}.log", 'a')
15
+ file.sync = true
16
+
17
+ if stdout
18
+ @logger = Logger.new($stdout)
19
+ $stdout.reopen(file)
20
+ $stderr.reopen(file)
21
+ else
22
+ @logger = Logger.new(file)
23
+ end
24
+
25
+ ActiveRecord::Base.logger = @logger
26
+ end
27
+
28
+ def clear
29
+ Dir["#{base}/log/*.log"].each do |file|
30
+ f = File.open(file, "w")
31
+ f.close
32
+ end
33
+ end
34
+
35
+ def method_missing(method, *args)
36
+ logger.send(method, *args)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,47 @@
1
+ module ActiveWrapper
2
+ class Mail
3
+
4
+ attr_reader :base, :env, :config
5
+
6
+ def initialize(options)
7
+ @base = options[:base]
8
+ @config = {
9
+ :smtp => options[:smtp] || {},
10
+ :imap => options[:imap] || {}
11
+ }
12
+ @env = options[:env].to_s
13
+
14
+ path = "#{base}/config/mail.yml"
15
+
16
+ if @env == 'test'
17
+ ActionMailer::Base.delivery_method = :test
18
+ @config = nil
19
+ else
20
+ if File.exists?(path)
21
+ yaml = YAML::load(File.open(path))
22
+ if yaml && yaml = yaml[@env].to_options
23
+ @config[:imap] = yaml[:imap].to_options unless @config[:imap]
24
+ @config[:smtp] = yaml[:smtp].to_options unless @config[:smtp]
25
+ end
26
+ end
27
+ if @config[:smtp]
28
+ ActionMailer::Base.delivery_method = :smtp
29
+ ActionMailer::Base.smtp_settings = @config[:smtp]
30
+ end
31
+ end
32
+ end
33
+
34
+ def deliver(options)
35
+ Mailer.deliver_email(options)
36
+ end
37
+
38
+ class Mailer < ActionMailer::Base
39
+ def email(options)
40
+ from options[:from]
41
+ recipients options[:to]
42
+ subject options[:subject]
43
+ body options[:body]
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../active_wrapper")
2
+
3
+ module ActiveWrapper
4
+ class Tasks
5
+
6
+ def initialize(options={}, &block)
7
+
8
+ task :environment do
9
+ $db, $log = ActiveWrapper.setup(options)
10
+ yield if block
11
+ end
12
+
13
+ namespace :db do
14
+ desc "Create the database"
15
+ task :create => :environment do
16
+ $db.create_db
17
+ end
18
+
19
+ desc "Drop the database"
20
+ task :drop => :environment do
21
+ $db.drop_db
22
+ end
23
+
24
+ desc "Migrate the database with optional VERSION"
25
+ task :migrate => :environment do
26
+ $db.migrate(ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
27
+ end
28
+
29
+ desc "Generate a migration with given NAME"
30
+ task :migration => :environment do
31
+ $db.generate_migration(ENV['NAME'])
32
+ end
33
+ end
34
+
35
+ namespace :log do
36
+ desc "Clear all logs"
37
+ task :clear => :environment do
38
+ $log.clear
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,39 @@
1
+ Dir["#{File.dirname(__FILE__)}/../vendor/*/lib"].each do |path|
2
+ $:.unshift path
3
+ end
4
+
5
+ require 'rubygems'
6
+ gem 'activerecord', '=2.3.2'
7
+ gem 'actionmailer', '=2.3.2'
8
+ require 'activerecord'
9
+ require 'actionmailer'
10
+ require 'logger'
11
+ require 'yaml'
12
+
13
+ require File.dirname(__FILE__) + "/active_wrapper/db"
14
+ require File.dirname(__FILE__) + "/active_wrapper/log"
15
+ require File.dirname(__FILE__) + "/active_wrapper/mail"
16
+
17
+ module ActiveWrapper
18
+ class <<self
19
+
20
+ def setup(options={})
21
+
22
+ options = {
23
+ :base => File.dirname($0),
24
+ :env => 'development',
25
+ :log => options[:env] || 'development'
26
+ }.merge(options.reject { |k, v| v.nil? })
27
+
28
+ db = Db.new(options)
29
+ log = Log.new(options)
30
+ mail = Mail.new(options)
31
+
32
+ ActionMailer::Base.logger = log
33
+
34
+ [ db, log, mail ]
35
+ end
36
+ end
37
+ end
38
+
39
+ ActiveRecord::Base.default_timezone = :utc
@@ -0,0 +1,11 @@
1
+ class __migration_name__ < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :__migration_table__ do |t|
4
+
5
+ end
6
+ end
7
+
8
+ def self.down
9
+ drop_table :__migration_table__
10
+ end
11
+ end
@@ -0,0 +1,48 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe ActiveWrapper::Db do
4
+
5
+ before(:each) do
6
+ $db, $log, $mail = ActiveWrapper.setup(
7
+ :base => SPEC + '/example_project',
8
+ :env => 'test'
9
+ )
10
+ $db.drop_db
11
+ $db.create_db
12
+ end
13
+
14
+ it "should establish a connection" do
15
+ $db.disconnect!
16
+ $db.establish_connection
17
+ $db.connected?.should == true
18
+ end
19
+
20
+ it "should create a database" do
21
+ $db.current_database.should == 'active_wrapper_test'
22
+ end
23
+
24
+ it "should drop a database" do
25
+ $db.drop_db
26
+ $db.current_database.should == nil
27
+ end
28
+
29
+ it "should migrate a database" do
30
+ $db.migrate
31
+ $db.execute('insert into tests () values ()')
32
+ $db.execute('select * from tests').num_rows.should == 1
33
+ end
34
+
35
+ it "should migrate reset a database" do
36
+ $db.migrate
37
+ $db.execute('insert into tests () values ()')
38
+ $db.migrate_reset
39
+ $db.execute('select * from tests').num_rows.should == 0
40
+ end
41
+
42
+ it "should generate a migration" do
43
+ $db.generate_migration 'another_test'
44
+ path = SPEC + "/example_project/db/migrate/002_another_test.rb"
45
+ File.exists?(path).should == true
46
+ FileUtils.rm_f path
47
+ end
48
+ end
@@ -0,0 +1,28 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
2
+
3
+ describe ActiveWrapper::Log do
4
+
5
+ before(:each) do
6
+ FileUtils.rm_f(@path = SPEC + "/example_project/log/test.log")
7
+ $db, $log, $mail = ActiveWrapper.setup(
8
+ :base => SPEC + '/example_project',
9
+ :env => 'test'
10
+ )
11
+ end
12
+
13
+ it "should create a log file" do
14
+ File.exists?(@path).should == true
15
+ end
16
+
17
+ it "should log to the log file" do
18
+ $log.info "test"
19
+ File.read(@path).include?('test').should == true
20
+ end
21
+
22
+ it "should clear the log file while keeping the logger intact" do
23
+ $log.clear
24
+ File.read(@path).include?('test').should == false
25
+ $log.info "test"
26
+ File.read(@path).include?('test').should == true
27
+ end
28
+ end
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require File.expand_path(File.dirname(__FILE__) + "/../../lib/active_wrapper/tasks")
4
+
5
+ ActiveWrapper::Tasks.new(
6
+ :base => File.dirname(__FILE__),
7
+ :env => 'test'
8
+ )
@@ -0,0 +1,7 @@
1
+ test:
2
+ database: active_wrapper_test
3
+ adapter: mysql
4
+ username: root
5
+ password:
6
+ host: localhost
7
+ socket: /tmp/mysql.sock
@@ -0,0 +1,10 @@
1
+ class Test < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :tests do |t|
4
+ end
5
+ end
6
+
7
+ def self.down
8
+ drop_table :tests
9
+ end
10
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,16 @@
1
+ $TESTING=true
2
+ SPEC = File.dirname(__FILE__)
3
+ $:.unshift File.expand_path("#{SPEC}/../lib")
4
+
5
+ require 'active_wrapper'
6
+ require 'pp'
7
+
8
+ Spec::Runner.configure do |config|
9
+ end
10
+
11
+ # For use with rspec textmate bundle
12
+ def debug(object)
13
+ puts "<pre>"
14
+ puts object.pretty_inspect.gsub('<', '&lt;').gsub('>', '&gt;')
15
+ puts "</pre>"
16
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: active_wrapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Winton Welsh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-06 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activerecord
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: actionmailer
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.2
34
+ version:
35
+ description:
36
+ email: mail@wintoni.us
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - README.markdown
43
+ files:
44
+ - active_wrapper.gemspec
45
+ - gemspec.rb
46
+ - lib/active_wrapper/db.rb
47
+ - lib/active_wrapper/log.rb
48
+ - lib/active_wrapper/mail.rb
49
+ - lib/active_wrapper/tasks.rb
50
+ - lib/active_wrapper.rb
51
+ - MIT-LICENSE
52
+ - Rakefile
53
+ - README.markdown
54
+ - resources/migration.template
55
+ - spec/active_wrapper/db_spec.rb
56
+ - spec/active_wrapper/log_spec.rb
57
+ - spec/example_project/config/database.yml
58
+ - spec/example_project/db/migrate/001_test.rb
59
+ - spec/example_project/Rakefile
60
+ - spec/spec.opts
61
+ - spec/spec_helper.rb
62
+ has_rdoc: true
63
+ homepage: http://github.com/winton/active_wrapper
64
+ licenses: []
65
+
66
+ post_install_message:
67
+ rdoc_options: []
68
+
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: "0"
76
+ version:
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: "0"
82
+ version:
83
+ requirements: []
84
+
85
+ rubyforge_project:
86
+ rubygems_version: 1.3.5
87
+ signing_key:
88
+ specification_version: 3
89
+ summary: Wraps ActiveRecord and Logger for use in non-Rails environments
90
+ test_files: []
91
+