timecapsule 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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