csv_db 0.0.4

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/Manifest ADDED
@@ -0,0 +1,5 @@
1
+ Manifest
2
+ README.rdoc
3
+ Rakefile
4
+ lib/csv_db.rb
5
+ lib/tasks/csv_db.rake
data/README.rdoc ADDED
@@ -0,0 +1,21 @@
1
+ = csv_db
2
+ is a gem for rails apps that adds to rake db tasks. The command rake db:csv_to_db pushes csv content to a db table
3
+ and the command rake db:db_to_csv pulls a db table into a csv
4
+
5
+ == Install
6
+ gem install csv_db
7
+
8
+ == Usage
9
+ If you have a table you want to backup into a csv in the rails db with a model: Model
10
+
11
+ just call: rake db:csv_to_db model=Model
12
+
13
+ the call writes into a csv file Model.csv located in the app root directory
14
+
15
+ If you have a data you want to push from a csv in the rails db with a model: Model
16
+
17
+ just call: rake db:db_to_csv csv=Model
18
+
19
+ the call reads from a csv file Model.csv located in the app root directory
20
+
21
+ remember to place files in the right place. also primary keys cannot be written.
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('csv_db', '0.0.4') do |p|
6
+ p.description = "Backup a db table to a csv or push csv content to a db table"
7
+ p.url = "http://github.com/phongsi/csv_db"
8
+ p.author = "Phong Si"
9
+ p.email = "phong.si@gmail.com"
10
+ p.ignore_pattern = ["tmp/*", "script/*"]
11
+ p.development_dependencies = []
12
+ p.require_signed = true
13
+ end
14
+
15
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
data/csv_db.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "csv_db"
5
+ s.version = "0.0.4"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Phong Si"]
9
+ s.cert_chain = ["/media/share/gem-public_cert.pem"]
10
+ s.date = "2011-10-07"
11
+ s.description = "Backup a db table to a csv or push csv content to a db table"
12
+ s.email = "phong.si@gmail.com"
13
+ s.extra_rdoc_files = ["README.rdoc", "lib/csv_db.rb", "lib/tasks/csv_db.rake"]
14
+ s.files = ["Manifest", "README.rdoc", "Rakefile", "lib/csv_db.rb", "lib/tasks/csv_db.rake", "csv_db.gemspec"]
15
+ s.homepage = "http://github.com/phongsi/csv_db"
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Csv_db", "--main", "README.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = "csv_db"
19
+ s.rubygems_version = "1.8.11"
20
+ s.signing_key = "/media/share/gem-private_key.pem"
21
+ s.summary = "Backup a db table to a csv or push csv content to a db table"
22
+
23
+ if s.respond_to? :specification_version then
24
+ s.specification_version = 3
25
+
26
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
+ else
28
+ end
29
+ else
30
+ end
31
+ end
data/lib/csv_db.rb ADDED
@@ -0,0 +1,9 @@
1
+ # Code by Phong Si
2
+ # adds the csv_to_db and db_to_csv tasks to your rails app
3
+ module CsvDb
4
+ class Railtie < ::Rails::Railtie
5
+ rake_tasks do
6
+ load "tasks/csv_db.rake"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,39 @@
1
+ require 'csv'
2
+
3
+ namespace :db do
4
+ task :db_to_csv => :environment do
5
+ model_dir = Dir['**/models/**/*.rb'].detect {|f| ENV['model'] == File.basename(f, '.*').camelize}
6
+ if !model_dir.eql?(nil)
7
+ table = File.basename(model_dir, '.*').camelize.constantize
8
+ objects = table.all
9
+ CSV.open("#{table}.csv", "wb") do |csv|
10
+ csv << table.column_names
11
+ row = Array.new
12
+ objects.each do |obj|
13
+ table.column_names.each do |col|
14
+ row << obj[col]
15
+ end
16
+ csv << row
17
+ row.clear
18
+ end
19
+ end
20
+ else
21
+ puts "Table #{ENV['model']} could not be found"
22
+ end
23
+ end
24
+ task :csv_to_db => :environment do
25
+ model = ENV['csv'].constantize
26
+ columns = Array.new
27
+ CSV.foreach("#{ENV['csv']}.csv", :headers => :first_row, :return_headers => true) do |row|
28
+ if row.header_row?()
29
+ columns = row
30
+ else
31
+ temp = model.new
32
+ (0...row.size).each do |col|
33
+ temp[columns[col]] = row[col]
34
+ end
35
+ temp.save!
36
+ end
37
+ end
38
+ end
39
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: csv_db
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.4
6
+ platform: ruby
7
+ authors:
8
+ - Phong Si
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDMjCCAhqgAwIBAgIBADANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhwaG9u
15
+ Zy5zaTEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
16
+ MB4XDTExMTAwNDA1NDgwOFoXDTEyMTAwMzA1NDgwOFowPzERMA8GA1UEAwwIcGhv
17
+ bmcuc2kxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
18
+ bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKHtc2cqdvd336VcnTNW
19
+ H1C4sB7ctyGG838FrmpQYaPqAJnFreBnJCNUnMgGLYUPwahHXLigS++aGdRikZ9E
20
+ hVqqDxa1LG1LHMeSbzMxqXh66oulEGatLaB/YQ7CRgh2TwOJ4y7RDpW65D3tPyJS
21
+ X1CyakTVlsDxG8pRZ7mMTH2wlU0fN7MUuuBK38m0ZrPQLzwpBuU69/mvO5QUnsGH
22
+ 7gazjD5ortaPZr9rx1LpYwz4XBVrUg+lEmsm4DlpGN6LX/+VOTS47H5z3Yc9zcFQ
23
+ 0gVvmTOdda1fU+wQzUhAcPqfninm2TuK3+9MWoQ766NJh1k45u+bRrLJbMC+rY7S
24
+ SZ8CAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU6RU7rKIu+CmEOj05KrbL
25
+ VEBoaL8wCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQBfk4oiklS/u5Ra
26
+ G+9KKZqID4mzMbJ4bZ/ZBWkEau8u/2Er9Kkwo9WlFf/qJW/cnAwfoHBM/NtbzBzv
27
+ /mgr46sDR4As8wkJX5wI7ENp1aAiyrtzWZoj9s+XpBiLy/J0OzZLQ2g6q/6v266P
28
+ SpPcbkHKOdu64XJYITFk7ZcI/09UbxSSFtNLkQW/CaBE46Rp4+OdH05szIcRpLfT
29
+ VWFjkuC6o1U0/9x1QC+qLI+u2xNEAGigXyUBK4Ary8NYNqfkSeQiGolDZmnFxOdN
30
+ IeIgwM0DGbbD4ss1Tec7wrEEIMkKkPyQifdJAwDwZqpVQzVivURjwX4mXn0j6XzY
31
+ ZfbBKDqq
32
+ -----END CERTIFICATE-----
33
+
34
+ date: 2011-10-07 00:00:00 Z
35
+ dependencies: []
36
+
37
+ description: Backup a db table to a csv or push csv content to a db table
38
+ email: phong.si@gmail.com
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files:
44
+ - README.rdoc
45
+ - lib/csv_db.rb
46
+ - lib/tasks/csv_db.rake
47
+ files:
48
+ - Manifest
49
+ - README.rdoc
50
+ - Rakefile
51
+ - lib/csv_db.rb
52
+ - lib/tasks/csv_db.rake
53
+ - csv_db.gemspec
54
+ homepage: http://github.com/phongsi/csv_db
55
+ licenses: []
56
+
57
+ post_install_message:
58
+ rdoc_options:
59
+ - --line-numbers
60
+ - --inline-source
61
+ - --title
62
+ - Csv_db
63
+ - --main
64
+ - README.rdoc
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "1.2"
79
+ requirements: []
80
+
81
+ rubyforge_project: csv_db
82
+ rubygems_version: 1.8.11
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: Backup a db table to a csv or push csv content to a db table
86
+ test_files: []
87
+
metadata.gz.sig ADDED
Binary file