makanai 0.1.2 → 0.1.3
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 +4 -4
- data/.travis.yml +8 -1
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +7 -3
- data/README.md +38 -2
- data/docker-compose.yml +14 -0
- data/lib/makanai/database.rb +13 -9
- data/lib/makanai/dbms/base.rb +15 -0
- data/lib/makanai/dbms/mysql.rb +35 -0
- data/lib/makanai/dbms/postgres.rb +35 -0
- data/lib/makanai/dbms/sqlite.rb +26 -0
- data/lib/makanai/rake_tasks.rb +1 -1
- data/lib/makanai/settings.rb +28 -1
- data/lib/makanai/version.rb +1 -1
- data/makanai.gemspec +2 -0
- metadata +35 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50ec7b4b39d4f324b5bb6d2c36c0f9f03274fd5b224862b4142d28cde7950a0f
|
4
|
+
data.tar.gz: d3b3716c39366f43b142c67f82ab7763ce6b65d07e3ef19a40347a56c71920a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 181e579b7e1d48853f06756c1f23f74b4ed15bcc083ac504df6fc716010ce99b3552216ebea3854a484a35256d6e7ef69031c2b8cc11c5d5c6165fcef3e53bc0
|
7
|
+
data.tar.gz: ed57e62dabd988e754728cd7677bfb397e1836bd499cde76ebaed7ccc27849e728fed84b473eb325ba7cb5e527d97a52cdcdf4cef183df4cb295f348827efae3
|
data/.travis.yml
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
sudo: false
|
3
3
|
language: ruby
|
4
4
|
cache: bundler
|
5
|
+
services:
|
6
|
+
- postgresql
|
7
|
+
- mysql
|
5
8
|
rvm:
|
6
9
|
- 2.7.0
|
7
|
-
before_install:
|
10
|
+
before_install:
|
11
|
+
- gem install bundler -v 2.0.2
|
12
|
+
- mysql -e 'CREATE DATABASE IF NOT EXISTS makanai;'
|
13
|
+
before_script:
|
14
|
+
- psql -c 'create database makanai;' -U postgres
|
data/CHANGELOG.md
CHANGED
@@ -19,3 +19,8 @@
|
|
19
19
|
Changed the setting so that it is retained by the Class variable, and made it configurable.
|
20
20
|
The big advantage is that you can use any web server(ex. puma) except WEBrick.
|
21
21
|
https://github.com/Madogiwa0124/makanai/pull/18/commits/e6ea10e596c685ef77c042fa1e8f0294c85166f2
|
22
|
+
|
23
|
+
## :gift: 2020/03/04 `v0.1.3` released.
|
24
|
+
* :sparkles: Multiple DBMS available.
|
25
|
+
you can use dbms(MySQL :dolphin:, PostgreSQL :elephant:) other then SQLite.
|
26
|
+
https://github.com/Madogiwa0124/makanai/pull/19
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
makanai (0.1.
|
4
|
+
makanai (0.1.3)
|
5
5
|
rack (>= 2.0.7, < 2.3.0)
|
6
6
|
rake (>= 10, < 14)
|
7
7
|
sqlite3 (~> 1.4.1)
|
@@ -12,9 +12,11 @@ GEM
|
|
12
12
|
ast (2.4.0)
|
13
13
|
diff-lcs (1.3)
|
14
14
|
jaro_winkler (1.5.4)
|
15
|
+
mysql2 (0.5.3)
|
15
16
|
parallel (1.19.1)
|
16
|
-
parser (2.7.0.
|
17
|
+
parser (2.7.0.4)
|
17
18
|
ast (~> 2.4.0)
|
19
|
+
pg (1.2.2)
|
18
20
|
rack (2.2.2)
|
19
21
|
rainbow (3.0.0)
|
20
22
|
rake (13.0.1)
|
@@ -32,7 +34,7 @@ GEM
|
|
32
34
|
diff-lcs (>= 1.2.0, < 2.0)
|
33
35
|
rspec-support (~> 3.9.0)
|
34
36
|
rspec-support (3.9.0)
|
35
|
-
rubocop (0.80.
|
37
|
+
rubocop (0.80.1)
|
36
38
|
jaro_winkler (~> 1.5.1)
|
37
39
|
parallel (~> 1.10)
|
38
40
|
parser (>= 2.7.0.1)
|
@@ -50,6 +52,8 @@ PLATFORMS
|
|
50
52
|
DEPENDENCIES
|
51
53
|
bundler (~> 2.0)
|
52
54
|
makanai!
|
55
|
+
mysql2 (~> 0.5)
|
56
|
+
pg (~> 1.2)
|
53
57
|
rspec (~> 3.0)
|
54
58
|
rubocop (~> 0.74)
|
55
59
|
|
data/README.md
CHANGED
@@ -47,7 +47,7 @@ $ ruby app.rb
|
|
47
47
|
create a ruby file(ex. app.rb).
|
48
48
|
|
49
49
|
``` ruby
|
50
|
-
|
50
|
+
require 'makanai/main'
|
51
51
|
|
52
52
|
router.get '/' do
|
53
53
|
'Hello Makanai!'
|
@@ -100,6 +100,26 @@ Overwrite the `handler` in `rack_app_config` with the created ruby file(ex
|
|
100
100
|
Makanai::Settings.rack_app_config = { handler: :puma, host: '0.0.0.0', port: '8080' }
|
101
101
|
```
|
102
102
|
|
103
|
+
### use other dbms
|
104
|
+
|
105
|
+
install dbms(postgresql, mysql, sqlite). And add dbms gem (ex. pg) in your Gemfile.
|
106
|
+
|
107
|
+
``` ruby
|
108
|
+
gem 'pg'
|
109
|
+
```
|
110
|
+
|
111
|
+
Overwrite the `databse_client` and `databse_config` with the created ruby file(ex. app.rb) and Rakefile.
|
112
|
+
|
113
|
+
``` ruby
|
114
|
+
Makanai::Settings.databse_client = :postgres
|
115
|
+
Makanai::Settings.databse_config = {
|
116
|
+
host: 'localhost',
|
117
|
+
password:'password',
|
118
|
+
dbname: 'makanai',
|
119
|
+
port: 5432
|
120
|
+
}
|
121
|
+
```
|
122
|
+
|
103
123
|
## routing
|
104
124
|
|
105
125
|
``` ruby
|
@@ -172,7 +192,7 @@ Create an erb file in `src/views` with the name specified in render.
|
|
172
192
|
|
173
193
|
## migration
|
174
194
|
|
175
|
-
|
195
|
+
migrate schema when executed `rake makanai:db:migration`.
|
176
196
|
|
177
197
|
```
|
178
198
|
# execute all migraiton sql
|
@@ -239,6 +259,22 @@ Resource.find(1).delete
|
|
239
259
|
|
240
260
|
Bug reports and pull requests are welcome on GitHub at https://github.com/Madogiwa0124/makanai. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
241
261
|
|
262
|
+
## setup develop enviroment
|
263
|
+
|
264
|
+
Use docker-compose to build `mysql` and` postgres` containers for development.
|
265
|
+
|
266
|
+
``` sh
|
267
|
+
$ docker-compose up -d
|
268
|
+
Creating makanai_mysql_1 ... done
|
269
|
+
Creating makanai_postgres_1 ... done
|
270
|
+
|
271
|
+
$ docker-compose ps
|
272
|
+
Name Command State Ports
|
273
|
+
----------------------------------------------------------------------------------------------
|
274
|
+
makanai_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
|
275
|
+
makanai_postgres_1 docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
|
276
|
+
```
|
277
|
+
|
242
278
|
# License
|
243
279
|
|
244
280
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/docker-compose.yml
ADDED
data/lib/makanai/database.rb
CHANGED
@@ -1,27 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative './dbms/sqlite.rb'
|
4
4
|
require_relative './settings.rb'
|
5
5
|
|
6
6
|
module Makanai
|
7
7
|
class Database
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
class UnsupportedException < StandardError; end
|
9
|
+
|
10
|
+
def initialize(client: Settings.databse_client, config: Settings.databse_config)
|
11
|
+
client_class = client_class(client)
|
12
|
+
@client = client_class.new(config)
|
12
13
|
end
|
13
14
|
|
14
|
-
attr_reader :
|
15
|
+
attr_reader :client
|
15
16
|
|
16
17
|
def execute_sql(sql)
|
17
18
|
puts "SQL: #{sql.gsub("\n", ' ')}"
|
18
|
-
|
19
|
+
client.execute_sql(sql)
|
19
20
|
end
|
20
21
|
|
21
22
|
private
|
22
23
|
|
23
|
-
def
|
24
|
-
|
24
|
+
def client_class(client)
|
25
|
+
require_relative File.join('dbms', client.to_s)
|
26
|
+
Object.const_get("Makanai::Dbms::#{client.capitalize}")
|
27
|
+
rescue LoadError
|
28
|
+
raise UnsupportedException
|
25
29
|
end
|
26
30
|
end
|
27
31
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'mysql2'
|
4
|
+
require_relative './base.rb'
|
5
|
+
module Makanai
|
6
|
+
module Dbms
|
7
|
+
class Mysql < Base
|
8
|
+
def initialize(config)
|
9
|
+
@db = Mysql2::Client.new(config || default_config)
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_reader :db
|
13
|
+
|
14
|
+
def execute_sql(sql)
|
15
|
+
db.query(sql).to_a.tap { close_db }
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def default_config
|
21
|
+
{
|
22
|
+
host: '0.0.0.0',
|
23
|
+
username: 'root',
|
24
|
+
password: 'password',
|
25
|
+
database: 'makanai',
|
26
|
+
port: 3306
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def close_db
|
31
|
+
db.close
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pg'
|
4
|
+
require_relative './base.rb'
|
5
|
+
module Makanai
|
6
|
+
module Dbms
|
7
|
+
class Postgres < Base
|
8
|
+
def initialize(config)
|
9
|
+
@db = PG.connect(config || default_config)
|
10
|
+
db.type_map_for_results = PG::BasicTypeMapForResults.new(db)
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :db
|
14
|
+
|
15
|
+
def execute_sql(sql)
|
16
|
+
db.exec(sql).each.to_a.tap { close_db }
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def default_config
|
22
|
+
{
|
23
|
+
host: 'localhost',
|
24
|
+
password: nil,
|
25
|
+
dbname: 'makanai',
|
26
|
+
port: 5432
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def close_db
|
31
|
+
db.finish
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sqlite3'
|
4
|
+
require_relative './base.rb'
|
5
|
+
module Makanai
|
6
|
+
module Dbms
|
7
|
+
class Sqlite < Base
|
8
|
+
def initialize(config)
|
9
|
+
@db = SQLite3::Database.new(config[:path])
|
10
|
+
db.tap { |db| db.results_as_hash = true }
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :db
|
14
|
+
|
15
|
+
def execute_sql(sql)
|
16
|
+
db.execute(sql).tap { close_db }
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def close_db
|
22
|
+
db.close
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/makanai/rake_tasks.rb
CHANGED
@@ -29,7 +29,7 @@ namespace :makanai do
|
|
29
29
|
sql_paths = Dir.glob("#{migration_root_path}*")
|
30
30
|
sql_paths.each { |sql_path| execute_sql(sql_path: sql_path) }
|
31
31
|
else
|
32
|
-
execute_sql(sql_path:
|
32
|
+
execute_sql(sql_path: File.join(migration_root_path, target))
|
33
33
|
end
|
34
34
|
puts "INFO: finished migration #{ENV['target']}"
|
35
35
|
end
|
data/lib/makanai/settings.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rack'
|
4
|
+
require_relative './dbms/sqlite.rb'
|
5
|
+
require_relative './dbms/postgres.rb'
|
4
6
|
|
5
7
|
module Makanai
|
6
8
|
class Settings
|
@@ -16,12 +18,37 @@ module Makanai
|
|
16
18
|
@migration_root_path = DEFAULT_MIGRATION_ROOT_PATH
|
17
19
|
@rack_app_config = DEFAULT_RACK_APP_CONFIG
|
18
20
|
|
21
|
+
# NOTE: Use Sqlite3
|
22
|
+
@databse_client = :sqlite
|
23
|
+
@databse_config = { path: File.join(@app_root_path, @database_path) }
|
24
|
+
|
25
|
+
# NOTE: Use Postgresql
|
26
|
+
# @databse_client = :postgres
|
27
|
+
# @databse_config = {
|
28
|
+
# host: 'localhost',
|
29
|
+
# password: 'password',
|
30
|
+
# dbname: 'makanai',
|
31
|
+
# port: 5432
|
32
|
+
# }.freeze
|
33
|
+
|
34
|
+
# NOTE: Use MySQL
|
35
|
+
# @databse_client = :mysql
|
36
|
+
# @databse_config = {
|
37
|
+
# host: 'localhost',
|
38
|
+
# username: 'root',
|
39
|
+
# password: 'password',
|
40
|
+
# database: 'makanai',
|
41
|
+
# port: 3306
|
42
|
+
# }.freeze
|
43
|
+
|
19
44
|
class << self
|
20
45
|
attr_accessor :app_root_path,
|
21
46
|
:database_path,
|
22
47
|
:template_root_path,
|
23
48
|
:migration_root_path,
|
24
|
-
:rack_app_config
|
49
|
+
:rack_app_config,
|
50
|
+
:databse_client,
|
51
|
+
:databse_config
|
25
52
|
|
26
53
|
def database_full_path
|
27
54
|
File.join(app_root_path, database_path)
|
data/lib/makanai/version.rb
CHANGED
data/makanai.gemspec
CHANGED
@@ -31,4 +31,6 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency "rubocop", "~> 0.74"
|
32
32
|
spec.add_development_dependency "bundler", "~> 2.0"
|
33
33
|
spec.add_development_dependency "rspec", "~> 3.0"
|
34
|
+
spec.add_development_dependency "pg", "~> 1.2"
|
35
|
+
spec.add_development_dependency "mysql2", "~> 0.5"
|
34
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: makanai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Madogiwa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -106,6 +106,34 @@ dependencies:
|
|
106
106
|
- - "~>"
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: '3.0'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: pg
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '1.2'
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '1.2'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: mysql2
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0.5'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0.5'
|
109
137
|
description: simple web application framework for learning.
|
110
138
|
email:
|
111
139
|
- madogiwa0124@gmail.com
|
@@ -127,10 +155,15 @@ files:
|
|
127
155
|
- Rakefile
|
128
156
|
- bin/console
|
129
157
|
- bin/setup
|
158
|
+
- docker-compose.yml
|
130
159
|
- exe/makanai
|
131
160
|
- lib/makanai.rb
|
132
161
|
- lib/makanai/application.rb
|
133
162
|
- lib/makanai/database.rb
|
163
|
+
- lib/makanai/dbms/base.rb
|
164
|
+
- lib/makanai/dbms/mysql.rb
|
165
|
+
- lib/makanai/dbms/postgres.rb
|
166
|
+
- lib/makanai/dbms/sqlite.rb
|
134
167
|
- lib/makanai/dsl.rb
|
135
168
|
- lib/makanai/generator.rb
|
136
169
|
- lib/makanai/generator/application/directories.yaml
|