timecapsule 1.1.2 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a422a4dafbf54588636959537c6e9d4f21593625
4
- data.tar.gz: 1663ba031f76d3266b5873651ee8f412f02f4d90
3
+ metadata.gz: 84c8cbbae9ae96154d8c9b14866a82a72f28a18c
4
+ data.tar.gz: 6dd541ee2d72e5a6c03f1bceae915deab5fe77d6
5
5
  SHA512:
6
- metadata.gz: 03f83158cae7928bc6c489aef238b971becc3c189c9dfc0f8ab7cbf45463a405d605ab2aed904c8dd144a8482173db94ada93fc04053a9d5536c6a0b6df7c83f
7
- data.tar.gz: c34df4ba2a2f8f1e90143173ee9564e9017d7351ab6a1824ccf3e6845ba4d214cb563ce9dd5b800cd4c11bd554c750fd432500eac044b40bd9fb8fd98dc300fa
6
+ metadata.gz: 2bf8faa5e51b9ffd9f2f353c85f5009b0e8773b4873b3190bfceeb9540520799aa3c6f1e075f5a1bbd15f3c905124be19859396b0f19ea375fbd384a5e428972
7
+ data.tar.gz: 9f427e8326c747ee93265189c13457ec6e4c37dbd7f40b86e80af18d1a30b3567d7226c1caf933d031de3882da02c394eef526c9b93965a406e7c9ac32d1481d
data/Rakefile CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'bundler'
4
4
  require 'rake'
5
- require 'rake/testtask'
5
+ require 'rspec/core/rake_task'
6
6
  require 'rdoc/task'
7
7
  require 'rubygems'
8
8
  require 'thread'
@@ -15,15 +15,11 @@ rescue Bundler::BundlerError => e
15
15
  exit e.status_code
16
16
  end
17
17
 
18
- task default: :test
18
+ RSpec::Core::RakeTask.new(:spec)
19
19
 
20
- Bundler::GemHelper.install_tasks
20
+ task default: :spec
21
21
 
22
- Rake::TestTask.new(:test) do |test|
23
- test.libs << 'lib' << 'test'
24
- test.pattern = 'test/**/test_*.rb'
25
- test.verbose = true
26
- end
22
+ Bundler::GemHelper.install_tasks
27
23
 
28
24
  Rake::RDocTask.new do |rdoc|
29
25
  version = File.exist?('VERSION') ? File.read('VERSION') : ''
@@ -0,0 +1,17 @@
1
+ namespace :timecapsule do
2
+ model_list = Dir['app/models/*.rb'].map{ |file| File.basename(file, '.*') }
3
+
4
+ model_list.each do |klass|
5
+ desc "Generates CSV dump of all #{klass} records"
6
+ task klass.pluralize.to_sym => :environment do
7
+ run_timecapsule_for(klass)
8
+ end
9
+ end
10
+
11
+ def run_timecapsule_for(klass)
12
+ Rails.application.eager_load!
13
+ if ActiveRecord::Base.descendants.map(&:name).include? klass.classify
14
+ Timecapsule.export_model(klass.classify.constantize)
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  class Timecapsule
2
- VERSION = '1.1.2'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timecapsule
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renée Hendricksen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-11-03 00:00:00.000000000 Z
13
+ date: 2015-12-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -64,9 +64,8 @@ files:
64
64
  - Rakefile
65
65
  - lib/timecapsule.rb
66
66
  - lib/timecapsule/railtie.rb
67
+ - lib/timecapsule/tasks.rb
67
68
  - lib/timecapsule/version.rb
68
- - test/helper.rb
69
- - test/test_timecapsule.rb
70
69
  homepage: https://github.com/nirds/timecapsule
71
70
  licenses:
72
71
  - MIT
@@ -91,6 +90,4 @@ rubygems_version: 2.4.6
91
90
  signing_key:
92
91
  specification_version: 4
93
92
  summary: gem for importing and exporting ActiveRecord data.
94
- test_files:
95
- - test/helper.rb
96
- - test/test_timecapsule.rb
93
+ test_files: []
@@ -1,92 +0,0 @@
1
- require 'rubygems'
2
- require 'thread'
3
- require 'active_record'
4
- require 'active_support'
5
- require 'rails'
6
-
7
- require 'bundler'
8
- begin
9
- Bundler.setup(:default, :development)
10
- rescue Bundler::BundlerError => e
11
- $stderr.puts e.message
12
- $stderr.puts 'Run `bundle install` to install missing gems'
13
- exit e.status_code
14
- end
15
- require 'test/unit'
16
- require 'shoulda'
17
-
18
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
19
- $LOAD_PATH.unshift(File.dirname(__FILE__))
20
-
21
- module Rails
22
- def self.root
23
- Pathname.new(File.expand_path(File.join(File.dirname(__FILE__), '..')))
24
- end
25
- end
26
-
27
- # ActiveRecord::Base.logger = ::Logger.new(StringIO.new)
28
-
29
- ENV['RAILS_ENV'] = 'test'
30
- ENV['RAILS_ROOT'] = File.expand_path(File.join(File.dirname(__FILE__), '..'))
31
-
32
- require 'timecapsule'
33
-
34
- class Timecapsule
35
- default_config = { import_directory: 'db/seed_data/',
36
- export_directory: 'db/seed_data/' }
37
- IMPORT_DIR ||= default_config[:import_directory]
38
- EXPORT_DIR ||= default_config[:export_directory]
39
- def self.check_for_and_make_directory(path)
40
- return true if File.exist?(path)
41
- path = Pathname.new(path)
42
- parent = path.parent
43
- Timecapsule.check_for_and_make_directory(parent) unless path.parent.parent.root?
44
- Dir.mkdir(path) unless File.exist?(path)
45
- end
46
- end
47
-
48
- ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
49
-
50
- ActiveRecord::Schema.define(version: 1) do
51
- create_table :users do |t|
52
- t.string :first_name
53
- t.string :last_name
54
- t.string :username
55
- t.string :password
56
- end
57
-
58
- create_table :posts do |t|
59
- t.string :title
60
- t.string :body
61
- t.integer :user_id
62
- end
63
-
64
- create_table :names do |t|
65
- t.string :name
66
- t.string :other_name
67
- end
68
- end
69
-
70
- module ActiveRecord
71
- class Base
72
- def self.reset_pk_sequence
73
- new_max = maximum(primary_key) || 0
74
- update_seq_sql = "update sqlite_sequence set seq = #{new_max} where name = '#{table_name}';"
75
- ActiveRecord::Base.connection.execute(update_seq_sql)
76
- end
77
- end
78
- end
79
-
80
- class User < ActiveRecord::Base
81
- has_many :posts
82
- end
83
-
84
- class Post < ActiveRecord::Base
85
- belongs_to :user
86
- end
87
-
88
- class Name < ActiveRecord::Base
89
- end
90
-
91
- class Test::Unit::TestCase
92
- end
@@ -1,68 +0,0 @@
1
- require 'helper'
2
-
3
- class TestTimecapsule < Test::Unit::TestCase
4
- def cleanup!
5
- cleanup_db!
6
- system "rm -rf #{Pathname.new(Timecapsule::EXPORT_DIR).parent}"
7
- system "rm -rf #{Timecapsule::EXPORT_DIR}"
8
- system "rm -rf #{Rails.root.join('config')}"
9
- end
10
-
11
- def cleanup_db!
12
- User.destroy_all
13
- Post.destroy_all
14
- Name.destroy_all
15
- User.reset_pk_sequence
16
- Post.reset_pk_sequence
17
- Name.reset_pk_sequence
18
- end
19
-
20
- should 'export a model' do
21
- Timecapsule.export_model(User)
22
- assert_equal true, File.exist?("#{Timecapsule::EXPORT_DIR}#{User.to_s.pluralize.underscore}.csv")
23
- cleanup!
24
- end
25
-
26
- should 'import a model' do
27
- User.create!(first_name: 'test', last_name: 'tester')
28
- assert_equal 1, User.count
29
- Timecapsule.export_model(User)
30
- cleanup_db!
31
- assert_equal 0, User.count
32
- Timecapsule.import_model(User)
33
- assert_equal 1, User.count
34
- assert_equal 'test', User.first.first_name
35
- cleanup!
36
- end
37
-
38
- should 'import all the models' do
39
- u = User.create!(first_name: 'test', last_name: 'tester')
40
- Post.create!(title: 'Test Post', body: 'I like to test my gems!', user: u)
41
- assert_equal User.first, Post.first.user
42
- assert_equal 1, User.count
43
- assert_equal 1, Post.count
44
- Timecapsule.export_model(User, 1)
45
- Timecapsule.export_model(Post, 2)
46
- cleanup_db!
47
- assert_equal 0, User.count
48
- assert_equal 0, Post.count
49
- Timecapsule.import
50
- assert_equal 1, User.count
51
- assert_equal 1, Post.count
52
- assert_equal 'test', User.first.first_name
53
- assert_equal 'Test Post', Post.first.title
54
- assert_equal User.first, Post.first.user
55
- cleanup!
56
- end
57
-
58
- should 'export part of a model' do
59
- u = User.create!(first_name: 'test', last_name: 'tester')
60
- Timecapsule.export_model(User, nil, { first_name: :name, last_name: :other_name }, 'name')
61
- cleanup_db!
62
- assert_equal true, File.exist?("#{Timecapsule::EXPORT_DIR}#{'name'.to_s.pluralize.underscore}.csv")
63
- Timecapsule.import
64
- assert_equal 1, Name.count
65
- assert_equal 'test', Name.first.name
66
- cleanup!
67
- end
68
- end