djoini 0.2 → 0.2.1

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: b0b3802abe0a8d26e8c6528ec5145e1b6663c67b
4
- data.tar.gz: e9cc697da02e1806e08263375596c1a473854ef4
3
+ metadata.gz: 870f9cfc0a600280051364300fb115d5a713d2fc
4
+ data.tar.gz: 73c7d52393c9f1153dce426a8eeed869e44c647e
5
5
  SHA512:
6
- metadata.gz: 91166b816f3d316209b132e9b5245a6a5730a9e2a191ea59f588ebd604040fac92e570ea51206bc1b6a70293f0a7249a38943f492c3576ab683d54bae617fded
7
- data.tar.gz: 01f7881c0eb9e3ac9ef1b0ad528b633cd208d2e44fad36065eb9a95e487d975f819104df4b0b6e052a24fae6f0135d0662262c8c5c8b3fce624d0e1ec6175fda
6
+ metadata.gz: ed50e4c22e6c7bce5324b515790ecad6469e8f25fd4e2476a6c58fa74878f99cb760fedcdedeab698ee629c2a7ba73f865f465a5494e2b73e2c423db923f60f1
7
+ data.tar.gz: 57676310a0640557db3a1adf8c847d324d54eb772c5dc4965f61c067c443a1e4cdb9c5e30f8e88c56854a47a4ab4721979577018e1ec623382056e82f1fac1b0
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Djoini
2
+ [![Build Status](https://travis-ci.org/Faulik/djoini.svg?branch=master)](https://travis-ci.org/Faulik/djoini)
2
3
 
3
- DJsOnINI is a implimentation of ActiveModel pattern and a fixture loader for json and ini formats. It implement's only a little part of pattern, so isn't usable in serious applications.
4
+ DJsOnINI is a implementation of ActiveRecord pattern and a fixture loader for json and ini formats. It implement's only a little part of pattern, so isn't usable in serious applications.
4
5
 
5
6
  Thing's that are implemented:
6
7
  - Djoini::Base class to inherit from
@@ -38,7 +39,7 @@ Or install it yourself as:
38
39
  **Important**
39
40
  Make appropriate tables or use other gem to create migrations. This gem doesn't handle migrations only mapping and loading.
40
41
 
41
- Also you need to create database.yml in your `PWD/config/` folder with atleast this content to use local db with specified credentials.
42
+ Also you need to create database.yml in your `PWD/config/` folder with at least this content to use local db with specified credentials.
42
43
 
43
44
  ```yaml
44
45
  postgres:
@@ -60,7 +61,7 @@ class Post < Djoini::Base # Inherit from Base class to use the power of ActiveRe
60
61
  end
61
62
  ```
62
63
 
63
- After that just use them like you normaly would with ActiveModel:
64
+ After that just use them like you normaly would with ActiveRecord:
64
65
 
65
66
  ```ruby
66
67
  user = User.create(name: 'Jack', last_name: 'Daniels')
@@ -75,6 +76,9 @@ user.destroy
75
76
  For more examples see tests.
76
77
 
77
78
  ### Rake task usage
79
+
80
+ Example app can be found at https://github.com/Faulik/djoini_example .
81
+
78
82
  **Important**
79
83
  - With `mixed` loading .ini files will be loaded first.
80
84
  - All file names must be named after coresponding tables, not models.
@@ -92,7 +96,7 @@ To load fixtures all fixtures(both ini and json) from default directory(`PWD/db/
92
96
  bundle exec rake djoini:load
93
97
  ```
94
98
 
95
- To load only ini fixtures, overrides options in config file:
99
+ To load only `ini` fixtures, overrides options in config file:
96
100
 
97
101
  ```
98
102
  bundle exec rake djoini:load[ini]
@@ -108,19 +112,10 @@ end
108
112
  ```
109
113
  Djoini will try to find `PWD/config/initializers/djoini.rb` and load it.
110
114
 
111
-
112
- ## Development
113
-
114
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
115
-
116
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
117
-
118
115
  ## Contributing
119
116
 
120
117
  Bug reports and pull requests are welcome on GitHub at https://github.com/faullik/djoini. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
121
118
 
122
-
123
119
  ## License
124
120
 
125
121
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
126
-
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
1
  require 'bundler/gem_tasks'
2
- import './lib/tasks/load.rake'
@@ -0,0 +1,11 @@
1
+ postgres:
2
+ adapter: postgresql
3
+ db_name: djoini_test
4
+ username: ruby
5
+ password: noway
6
+
7
+ test:
8
+ adapter: postgresql
9
+ db_name: djoini_test
10
+ username: ruby
11
+ password: noway
@@ -0,0 +1,4 @@
1
+ test:
2
+ adapter: postgresql
3
+ db_name: travis_ci_test
4
+ username: postgres
@@ -1,5 +1,6 @@
1
1
  require 'singleton'
2
2
  require 'pg'
3
+ require 'yaml'
3
4
 
4
5
  # Holds connection singleton class
5
6
  module Djoini
@@ -11,21 +12,32 @@ module Djoini
11
12
  class Connection
12
13
  include Singleton
13
14
 
14
- attr_reader :conn
15
+ def conn
16
+ db || load_database
17
+ end
15
18
 
16
19
  def establish_connection(params)
17
20
  _adapter = params.fetch('adapter', 'postgres')
18
21
  _username = params.fetch('username')
19
- _password = params.fetch('password')
22
+ _password = params.fetch('password', '')
20
23
  _host = params.fetch('host', 'localhost')
21
24
  _port = params.fetch('port', '5432')
22
25
  _db_name = params.fetch('db_name')
23
26
 
24
- @conn = PG.connect("#{_adapter}://#{_username}:#{_password}@#{_host}:#{_port}/#{_db_name}")
27
+ self.db = PG.connect("#{_adapter}://#{_username}:#{_password}@#{_host}:#{_port}/#{_db_name}")
28
+ end
29
+
30
+ def self.load_database(db_name = 'postgres')
31
+ _db_config_path = File.join(Dir.pwd, '/config/database.yml')
32
+
33
+ fail unless File.file?(_db_config_path)
34
+
35
+ _conn_config = YAML.load(File.read(_db_config_path))
36
+ Djoini::Connection.instance.establish_connection(_conn_config[db_name])
25
37
  end
26
38
 
27
39
  private
28
40
 
29
- attr_writer :conn
41
+ attr_accessor :db
30
42
  end
31
43
  end
@@ -1,3 +1,3 @@
1
1
  module Djoini
2
- VERSION = '0.2'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -6,8 +6,6 @@ namespace :djoini do
6
6
 
7
7
  load_configuration
8
8
 
9
- load_database
10
-
11
9
  _loader = Djoini::Files.new
12
10
 
13
11
  _type = args[:type] || Djoini.configuration.fixtures_type
@@ -24,15 +22,4 @@ namespace :djoini do
24
22
  # To make sure configure was called if initializer wasn't found
25
23
  Djoini.configure {}
26
24
  end
27
-
28
- def load_database
29
- require 'yaml'
30
-
31
- _db_config_path = File.join(Dir.pwd, '/config/database.yml')
32
-
33
- fail unless File.file?(_db_config_path)
34
-
35
- _conn_config = YAML.load(File.read(_db_config_path))
36
- Djoini::Connection.instance.establish_connection(_conn_config['postgres'])
37
- end
38
25
  end
@@ -54,4 +54,18 @@ describe Djoini::Base do
54
54
  expect(_users[0].last_name).to eq 'Beggins'
55
55
  end
56
56
  end
57
+
58
+ context 'nonexisting table ' do
59
+ it 'expected to 0 rows' do
60
+ _table = Djoini::Table.new(name: 'NonExist')
61
+
62
+ expect(_table.columns.count).to eq 0
63
+ end
64
+
65
+ it 'expected to fail on insert' do
66
+ _table = Djoini::Table.new(name: 'NonExist')
67
+
68
+ expect { _table.insert(name: 'Bull') }.to raise_error(RuntimeError)
69
+ end
70
+ end
57
71
  end
@@ -1,12 +1,19 @@
1
1
  require 'rubygems'
2
- require 'yaml'
3
2
  require 'pry'
4
3
 
5
4
  require_relative '../lib/djoini'
6
5
 
7
- conn_info = YAML.load(File.read(File.dirname(__FILE__) + '/database.yml'))
6
+ Djoini::Connection.load_database('test')
8
7
 
9
- Djoini::Connection.instance.establish_connection(conn_info['postgres'])
8
+ Djoini.db.exec("CREATE TABLE IF NOT EXISTS users
9
+ (
10
+ id SERIAL,
11
+ name text,
12
+ last_name text,
13
+ age integer,
14
+ CONSTRAINT user_pk PRIMARY KEY (id)
15
+ )
16
+ ")
10
17
 
11
18
  require_relative 'models/post'
12
19
  require_relative 'models/user'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: djoini
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - faul
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-15 00:00:00.000000000 Z
11
+ date: 2015-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -119,6 +119,8 @@ files:
119
119
  - Rakefile
120
120
  - bin/console
121
121
  - bin/setup
122
+ - config/database.yml
123
+ - config/database.yml.travis
122
124
  - lib/djoini.rb
123
125
  - lib/djoini/base.rb
124
126
  - lib/djoini/composite.rb
@@ -134,7 +136,6 @@ files:
134
136
  - lib/djoini/table.rb
135
137
  - lib/djoini/version.rb
136
138
  - lib/tasks/load.rake
137
- - spec/database.yml
138
139
  - spec/djoini/model_spec.rb
139
140
  - spec/djoini/task_fixtures/users.ini
140
141
  - spec/djoini/task_fixtures/users.json
@@ -167,7 +168,6 @@ signing_key:
167
168
  specification_version: 4
168
169
  summary: Implimentation of ActiveModel pattern and a fixture loader
169
170
  test_files:
170
- - spec/database.yml
171
171
  - spec/djoini/model_spec.rb
172
172
  - spec/djoini/task_fixtures/users.ini
173
173
  - spec/djoini/task_fixtures/users.json
@@ -1,5 +0,0 @@
1
- postgres:
2
- adapter: postgresql
3
- db_name: djoini_test
4
- username: ruby
5
- password: noway