tamarama 0.1.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 +7 -0
- data/.gitignore +1 -0
- data/Gemfile +20 -0
- data/README.md +23 -0
- data/Rakefile +0 -0
- data/config.ru +5 -0
- data/example.env.test +1 -0
- data/lib/tamarama/db/sequel/database_validator.rb +15 -0
- data/lib/tamarama/db/sequel.rb +22 -0
- data/lib/tamarama/env.rb +7 -0
- data/lib/tamarama/rake_task.rb +50 -0
- data/lib/tamarama/version.rb +3 -0
- data/lib/tamarama.rb +5 -0
- data/tamarama.gemspec +23 -0
- data/test/test_helper.rb +14 -0
- metadata +87 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3da72114621dc24d9dea1d24356f8fa3bf717b8e
|
4
|
+
data.tar.gz: 5a82a4dd707a51e7a7b2b16178ced90bfbd5a026
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cc38762bf571ef53ff669a6747edaf154bbab72a3b005c2ff38d629f2ed964cf4a86ae6cb43330a87f60a2b94afebf30d987428a99f1d337b995f922d690bf3b
|
7
|
+
data.tar.gz: 48923f21322029ae46d3da87a91ba1f6c428278e8c91677bf9e4f025ba418ca3b4f703740bc640749628c4ee0a3a6e66ba01a495e5f22f79d005e4920f66ffc5
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
.env*
|
data/Gemfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# gem 'puma'
|
4
|
+
gem "rake"
|
5
|
+
gem 'sinatra'
|
6
|
+
gem 'pg'
|
7
|
+
gem "reform"
|
8
|
+
gem "trailblazer"
|
9
|
+
gem "trailblazer-loader"
|
10
|
+
gem "sequel"
|
11
|
+
gem "dry-validation"
|
12
|
+
|
13
|
+
group :development, :test do
|
14
|
+
gem 'dotenv'
|
15
|
+
gem "rack-test"
|
16
|
+
# gem "match_json"
|
17
|
+
gem 'database_cleaner'
|
18
|
+
|
19
|
+
gem "minitest"
|
20
|
+
end
|
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
## Configuration
|
2
|
+
|
3
|
+
Tamarama uses the `dotenv` gem for managing environment variables such as database connection strings.
|
4
|
+
|
5
|
+
For you, this boils down to providing `.env.development` and `.env.test` files in the project root. Check out `example.env.test` for an example of what such a config file might look like.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
# .env.test
|
9
|
+
DATABASE_URL="postgres://user:password@localhost/myblog_test"
|
10
|
+
```
|
11
|
+
|
12
|
+
## Migrations
|
13
|
+
|
14
|
+
```
|
15
|
+
RACK_ENV=test rake db:migrate
|
16
|
+
RACK_ENV=test rake db:migrate[0]
|
17
|
+
```
|
18
|
+
|
19
|
+
## Testing Connection
|
20
|
+
|
21
|
+
```
|
22
|
+
RACK_ENV=test rake db:debug
|
23
|
+
```
|
data/Rakefile
ADDED
File without changes
|
data/config.ru
ADDED
data/example.env.test
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
DATABASE_URL="postgres://nick:stawpmockingmay@localhost/exp_test"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Tamarama
|
2
|
+
module DB
|
3
|
+
module Sequel
|
4
|
+
# Keeps the connection up on a infrequently visited website, but makes it slower.
|
5
|
+
module DatabaseValidator
|
6
|
+
def self.call(database_handle)
|
7
|
+
# via a middleware: https://gist.github.com/jacaetevha/3801154
|
8
|
+
database_handle.extension(:connection_validator)
|
9
|
+
database_handle.pool.connection_validation_timeout = -1 # apparently, this is very slow and shouldn't be really done.
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "sequel"
|
2
|
+
|
3
|
+
module Tamarama
|
4
|
+
module DB
|
5
|
+
module Sequel
|
6
|
+
def self.call()
|
7
|
+
::Sequel::Model.strict_param_setting = false
|
8
|
+
::Sequel::Database.extension :pg_json
|
9
|
+
::Sequel.extension :pg_json_ops
|
10
|
+
|
11
|
+
environment = ENV["RACK_ENV"]
|
12
|
+
connection_string = ENV["DATABASE_URL"]
|
13
|
+
raise "Missing Connection string" if connection_string.nil?
|
14
|
+
|
15
|
+
::Sequel.connect(connection_string)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Sequel::Database.extension :"uuid"
|
22
|
+
# Sequel::Model.plugin :timestamps
|
data/lib/tamarama/env.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# database tasks
|
2
|
+
require "dotenv/tasks"
|
3
|
+
|
4
|
+
namespace :db do
|
5
|
+
desc "Run migrations up to specified version or to latest."
|
6
|
+
task :migrate, [:version] => [:dotenv] do |_, args|
|
7
|
+
require_relative "env"
|
8
|
+
require_relative "db/sequel"
|
9
|
+
# DISCUSS: this should be `require_relative "application"` if you want to load the entire stack for migrations.
|
10
|
+
|
11
|
+
require "sequel/extensions/migration"
|
12
|
+
|
13
|
+
version = args[:version]
|
14
|
+
migrations_directory = "migrations"
|
15
|
+
|
16
|
+
db = DB.connect
|
17
|
+
|
18
|
+
message = if args[:version].nil?
|
19
|
+
Sequel::Migrator.run(db, migrations_directory)
|
20
|
+
"Migrated to latest"
|
21
|
+
else
|
22
|
+
Sequel::Migrator.run(db, migrations_directory, target: version.to_i)
|
23
|
+
"Migrated to version #{version}"
|
24
|
+
end
|
25
|
+
|
26
|
+
puts message# if environment != "test"
|
27
|
+
end
|
28
|
+
|
29
|
+
task :debug => [:dotenv] do
|
30
|
+
require "application"
|
31
|
+
|
32
|
+
db = DB.connect
|
33
|
+
puts "=== DB: #{db.uri}"
|
34
|
+
puts db.schema(:users).inspect
|
35
|
+
# puts User::Persistence.db_schema
|
36
|
+
# puts User::Persistence.dataset.all.inspect
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
task :default => :test
|
41
|
+
require "rake/testtask"
|
42
|
+
|
43
|
+
# the test task will require all test files, which in turn require test_helper.rb which in turn
|
44
|
+
# requires application.rb.
|
45
|
+
desc 'Default: run tests.'
|
46
|
+
Rake::TestTask.new(:test) do |test|
|
47
|
+
test.libs << 'test'
|
48
|
+
test.pattern = 'test/**/*_test.rb'
|
49
|
+
test.verbose = true
|
50
|
+
end
|
data/lib/tamarama.rb
ADDED
data/tamarama.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'tamarama/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "tamarama"
|
7
|
+
spec.version = Tamarama::VERSION
|
8
|
+
spec.authors = ["Nick Sutterer"]
|
9
|
+
spec.email = ["apotonick@gmail.com"]
|
10
|
+
spec.summary = %q{The simplest web stack.}
|
11
|
+
spec.homepage = "http://trailblazer.to"
|
12
|
+
spec.license = "MIT"
|
13
|
+
|
14
|
+
spec.files = `git ls-files`.split($/)
|
15
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_development_dependency "rake"
|
20
|
+
spec.add_development_dependency "minitest"
|
21
|
+
|
22
|
+
spec.required_ruby_version = '>= 2.0.0'
|
23
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
ENV['RACK_ENV'] = 'test'
|
2
|
+
require "minitest/autorun"
|
3
|
+
|
4
|
+
|
5
|
+
require_relative "../stack/env"
|
6
|
+
require_relative "../stack/db"
|
7
|
+
DB.connect
|
8
|
+
|
9
|
+
require_relative "../application"
|
10
|
+
|
11
|
+
require 'rack/test'
|
12
|
+
Dir['./test/support/*.rb'].each { |file| require file }
|
13
|
+
|
14
|
+
# require "match_json"
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tamarama
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nick Sutterer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-07-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description:
|
42
|
+
email:
|
43
|
+
- apotonick@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- ".gitignore"
|
49
|
+
- Gemfile
|
50
|
+
- README.md
|
51
|
+
- Rakefile
|
52
|
+
- config.ru
|
53
|
+
- example.env.test
|
54
|
+
- lib/tamarama.rb
|
55
|
+
- lib/tamarama/db/sequel.rb
|
56
|
+
- lib/tamarama/db/sequel/database_validator.rb
|
57
|
+
- lib/tamarama/env.rb
|
58
|
+
- lib/tamarama/rake_task.rb
|
59
|
+
- lib/tamarama/version.rb
|
60
|
+
- tamarama.gemspec
|
61
|
+
- test/test_helper.rb
|
62
|
+
homepage: http://trailblazer.to
|
63
|
+
licenses:
|
64
|
+
- MIT
|
65
|
+
metadata: {}
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options: []
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 2.0.0
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 2.6.8
|
83
|
+
signing_key:
|
84
|
+
specification_version: 4
|
85
|
+
summary: The simplest web stack.
|
86
|
+
test_files:
|
87
|
+
- test/test_helper.rb
|