puffs 0.2.03 → 0.2.04
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/SamplePuffsApp/app/controllers/posts.rb +1 -1
- data/bin/puffs +6 -1
- data/lib/db_connection.rb +9 -5
- data/lib/sql_object/associatable.rb +0 -2
- data/puffs.gemspec +1 -1
- data/readme.md +64 -49
- metadata +2 -5
- data/.DS_Store +0 -0
- data/.byebug_history +0 -2
- data/Gemfile.lock +0 -65
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 62f1bbad581f546893650f943280678b704a8e61
|
|
4
|
+
data.tar.gz: 3820cd8108d253066d339e762628ca37545b1599
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 39b03317cdd9fc533a8212786cde172eb66d0a512adfb32c1723dfa4ea58b21d0aa752bc0d88a5460b4509d9d45d55c98ae9729032018c96488ea6731c9c107e
|
|
7
|
+
data.tar.gz: 5f15695eb605caf6a1ff4ed2454d8d01d571a912e073528e0c98feddb52bc8b88e9af3df9a94fdc789048eae8ee7e2c8f651f5b241c2c6e135b87aaf41acbcb9
|
data/bin/puffs
CHANGED
|
@@ -99,6 +99,12 @@ class CLI < Thor
|
|
|
99
99
|
desc 'new', 'creates a new Puffs app'
|
|
100
100
|
def new(name)
|
|
101
101
|
Dir.mkdir "./#{name}"
|
|
102
|
+
Dir.mkdir "./#{name}/config"
|
|
103
|
+
|
|
104
|
+
File.open("./#{name}/config/database.yml", "w") do |f|
|
|
105
|
+
f.write("database: #{name}")
|
|
106
|
+
end
|
|
107
|
+
|
|
102
108
|
Dir.mkdir "./#{name}/app"
|
|
103
109
|
Dir.mkdir "./#{name}/app/models"
|
|
104
110
|
Dir.mkdir "./#{name}/app/views"
|
|
@@ -106,7 +112,6 @@ class CLI < Thor
|
|
|
106
112
|
File.open("./#{name}/app/controllers/application_controller.rb", "w") do |f|
|
|
107
113
|
f.write File.read(File.expand_path('../../template/app/controllers/application_controller.rb', __FILE__))
|
|
108
114
|
end
|
|
109
|
-
Dir.mkdir "./#{name}/config"
|
|
110
115
|
File.open("./#{name}/config/routes.rb", "w") do |f|
|
|
111
116
|
f.write File.read(File.expand_path('../../template/config/routes.rb', __FILE__))
|
|
112
117
|
end
|
data/lib/db_connection.rb
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
require 'pg'
|
|
2
|
+
require 'yaml'
|
|
2
3
|
|
|
3
|
-
APP_NAME = "Puffs"
|
|
4
4
|
PRINT_QUERIES = ENV['PRINT_QUERIES'] == 'true'
|
|
5
5
|
MIGRATIONS = Dir.glob('./db/migrate/*.sql').to_a
|
|
6
6
|
|
|
7
7
|
class DBConnection
|
|
8
|
+
def self.app_name
|
|
9
|
+
YAML.load_file(Dir.pwd + '/config/database.yml')['database']
|
|
10
|
+
end
|
|
11
|
+
|
|
8
12
|
def self.open
|
|
9
|
-
@db = PG::Connection.new( :dbname =>
|
|
13
|
+
@db = PG::Connection.new( :dbname => DBConnection.app_name, :port => 5432 )
|
|
10
14
|
end
|
|
11
15
|
|
|
12
16
|
def self.reset
|
|
13
17
|
commands = [
|
|
14
|
-
"dropdb #{
|
|
15
|
-
"createdb #{
|
|
18
|
+
"dropdb #{DBConnection.app_name}",
|
|
19
|
+
"createdb #{DBConnection.app_name}"
|
|
16
20
|
]
|
|
17
21
|
|
|
18
22
|
commands.each { |command| `#{command}` }
|
|
@@ -22,7 +26,7 @@ class DBConnection
|
|
|
22
26
|
ensure_version_table
|
|
23
27
|
to_migrate = MIGRATIONS.reject { |file| has_migrated?(file) }
|
|
24
28
|
to_migrate.each { |file| add_to_version(file) }
|
|
25
|
-
to_migrate.map {|file| "psql -d #{
|
|
29
|
+
to_migrate.map {|file| "psql -d #{DBConnection.app_name} -a -f #{file}"}
|
|
26
30
|
.each {|command| `#{command}`}
|
|
27
31
|
end
|
|
28
32
|
|
|
@@ -28,8 +28,6 @@ class HasManyOptions < AssocOptions
|
|
|
28
28
|
def initialize(name, self_class_name, options = {})
|
|
29
29
|
@primary_key = options[:primary_key] || :id
|
|
30
30
|
@foreign_key = options[:foreign_key] || "#{self_class_name.to_s.underscore}_id".to_sym
|
|
31
|
-
|
|
32
|
-
#I think there is a bug here, investigate.
|
|
33
31
|
@class_name = options[:class_name] || name.to_s.singularize.camelcase
|
|
34
32
|
end
|
|
35
33
|
end
|
data/puffs.gemspec
CHANGED
data/readme.md
CHANGED
|
@@ -13,25 +13,28 @@ How To Do Puffs
|
|
|
13
13
|
* Postgres
|
|
14
14
|
|
|
15
15
|
1. Open command line, enter the following:
|
|
16
|
-
2. gem install puffs
|
|
17
|
-
3. puffs new [name of your app]
|
|
18
|
-
4. puffs db create
|
|
16
|
+
2. `gem install puffs`
|
|
17
|
+
3. `puffs new [name of your app]``
|
|
18
|
+
4. `puffs db create`
|
|
19
19
|
5. You're all set!
|
|
20
20
|
|
|
21
|
+
Command Line Interface
|
|
22
|
+
----------------------
|
|
23
|
+
|
|
21
24
|
Enter 'puffs' into the command line with no arguments to see the full
|
|
22
25
|
list of commands, or just read them below:
|
|
23
26
|
|
|
24
|
-
* puffs new [app name]
|
|
25
|
-
* puffs server
|
|
26
|
-
* puffs generate
|
|
27
|
-
* model [model name]
|
|
28
|
-
* controller [controller name]
|
|
29
|
-
* migration [migration name]
|
|
30
|
-
* puffs db
|
|
31
|
-
* create
|
|
32
|
-
* migrate
|
|
33
|
-
* seed
|
|
34
|
-
* reset
|
|
27
|
+
* `puffs new [app name]``
|
|
28
|
+
* `puffs server`
|
|
29
|
+
* `puffs generate`
|
|
30
|
+
* `model [model name]`
|
|
31
|
+
* `controller [controller name]`
|
|
32
|
+
* `migration [migration name]`
|
|
33
|
+
* `puffs db`
|
|
34
|
+
* `create`
|
|
35
|
+
* `migrate`
|
|
36
|
+
* `seed`
|
|
37
|
+
* `reset`
|
|
35
38
|
|
|
36
39
|
Demo App
|
|
37
40
|
--------
|
|
@@ -44,48 +47,48 @@ The Puffs ORM
|
|
|
44
47
|
|
|
45
48
|
Puffs' object relational mapping is inspired by Rails' ActiveRecord.
|
|
46
49
|
It converts tables in a Postgres database into instances of the
|
|
47
|
-
Puffs::SQLObject class.
|
|
50
|
+
`Puffs::SQLObject` class.
|
|
48
51
|
|
|
49
|
-
Puffs::SQLObject is a very lightweight version of ActiveRecord::Base
|
|
50
|
-
It's a great way to use ActiveRecord::Base's CRUD methods and associations
|
|
52
|
+
`Puffs::SQLObject` is a very lightweight version of `ActiveRecord::Base`.
|
|
53
|
+
It's a great way to use `ActiveRecord::Base`'s CRUD methods and associations
|
|
51
54
|
without all the extra overhead.
|
|
52
55
|
|
|
53
|
-
Puff::SQLRelation imitates the behavior of ActiveRecord::Relation
|
|
56
|
+
`Puff::SQLRelation` imitates the behavior of `ActiveRecord::Relation`,
|
|
54
57
|
making sure no unnecessary queries are made to the DB.
|
|
55
58
|
|
|
56
59
|
###All of your favorite methods are present, including:
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
60
|
+
* `#create`
|
|
61
|
+
* `#find`
|
|
62
|
+
* `#all`
|
|
63
|
+
* `#update`
|
|
64
|
+
* `#destroy`
|
|
62
65
|
|
|
63
66
|
###Also builds Rails table associations:
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
67
|
+
* `::belongs_to`
|
|
68
|
+
* `::has_many`
|
|
69
|
+
* `::has_one_through`
|
|
70
|
+
* `::has_many_through`
|
|
68
71
|
|
|
69
|
-
|
|
70
|
-
Has the basic functionality of ActiveRecord::Relation
|
|
72
|
+
##`Puffs::SQLRelation`
|
|
73
|
+
Has the basic functionality of `ActiveRecord::Relation`, allowing us to
|
|
71
74
|
order and search DB entries with minimal querying.
|
|
72
75
|
|
|
73
|
-
All methods are lazy and stackable. Queries are only fired when SQLRelation#load
|
|
76
|
+
All methods are lazy and stackable. Queries are only fired when `SQLRelation#load`
|
|
74
77
|
is called or when the relation is coerced into an Array.
|
|
75
78
|
|
|
76
79
|
###Methods included:
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
80
|
+
* `::all`
|
|
81
|
+
* `::where`
|
|
82
|
+
* `::includes`
|
|
83
|
+
* `::find`
|
|
84
|
+
* `::order`
|
|
85
|
+
* `::limit`
|
|
86
|
+
* `::count`
|
|
87
|
+
* `::first`
|
|
88
|
+
* `::last`
|
|
86
89
|
|
|
87
90
|
###Eager loading reduces queries
|
|
88
|
-
* Preload has_many and belongs_to associations by calling SQLObject
|
|
91
|
+
* Preload has_many and belongs_to associations by calling `SQLObject::includes`
|
|
89
92
|
* Lazy and chainable.
|
|
90
93
|
* Reduces your DB queries from (n + 1) to 2.
|
|
91
94
|
|
|
@@ -93,29 +96,41 @@ Database
|
|
|
93
96
|
--------
|
|
94
97
|
|
|
95
98
|
The Puffs commands prefixed with 'db' interact with the Puffs Postgres database.
|
|
96
|
-
*
|
|
99
|
+
* `puffs db create` drops any Postgres DB named 'Puffs' and creates a new,
|
|
97
100
|
empty one.
|
|
98
|
-
*
|
|
101
|
+
* `puffs db migrate` finds and any SQL files under db/migrate that have not
|
|
99
102
|
been migrated and copies them into the DB.
|
|
100
|
-
*
|
|
103
|
+
* `puffs db seed` calls Seed::populate in db/seeds.rb, allowing you
|
|
101
104
|
to quickly reset your DB to a seed file while in development.
|
|
102
|
-
*
|
|
105
|
+
* `puffs db reset` executes all three of the above commands, saving you
|
|
103
106
|
time and energy!
|
|
104
107
|
|
|
105
|
-
|
|
108
|
+
Migrations
|
|
109
|
+
----------
|
|
110
|
+
|
|
111
|
+
Entering `puffs generate (or puffs g) migration [migration name]` in the
|
|
112
|
+
command line will create a time-stamped SQL file under db/migrations.
|
|
113
|
+
Write SQL in here to stage changes in the DB (add, drop, or change tables),
|
|
114
|
+
and `puffs db migrate` to implement them.
|
|
115
|
+
|
|
116
|
+
_*NB:*_ To reverse a migration that has been run, you must generate a new
|
|
117
|
+
migration that undoes the changes. Deleting the original migration will
|
|
118
|
+
do nothing.
|
|
119
|
+
|
|
120
|
+
`Puffs::ControllerBase`
|
|
106
121
|
---------------------
|
|
107
122
|
|
|
108
|
-
|
|
123
|
+
`Puffs::ControllerBase` connects your models to your routes, allowing
|
|
109
124
|
access to the DB through html.erb views. It's how Puffs takes over the Web.
|
|
110
125
|
|
|
111
126
|
Router
|
|
112
127
|
------
|
|
113
128
|
|
|
114
129
|
Routes live in config/routes.rb. New routes are written using Regex.
|
|
115
|
-
Open a server connection with the
|
|
130
|
+
Open a server connection with the `puffs server` command.
|
|
116
131
|
|
|
117
132
|
Puffs Console
|
|
118
133
|
-------------
|
|
119
134
|
|
|
120
|
-
Access your DB with Puffs::SQLObject methods by simply entering
|
|
121
|
-
|
|
135
|
+
Access your DB with `Puffs::SQLObject` methods by simply entering
|
|
136
|
+
`require 'puffs'` in Pry (or IRB).
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: puffs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.04
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Zachary Moroni
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-03-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -156,13 +156,10 @@ executables:
|
|
|
156
156
|
extensions: []
|
|
157
157
|
extra_rdoc_files: []
|
|
158
158
|
files:
|
|
159
|
-
- ".DS_Store"
|
|
160
|
-
- ".byebug_history"
|
|
161
159
|
- ".gitignore"
|
|
162
160
|
- ".rspec"
|
|
163
161
|
- ".travis.yml"
|
|
164
162
|
- Gemfile
|
|
165
|
-
- Gemfile.lock
|
|
166
163
|
- LICENSE.txt
|
|
167
164
|
- SamplePuffsApp/Gemfile
|
|
168
165
|
- SamplePuffsApp/Gemfile.lock
|
data/.DS_Store
DELETED
|
Binary file
|
data/.byebug_history
DELETED
data/Gemfile.lock
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
puffs (0.2.01)
|
|
5
|
-
activesupport (~> 4.2.5.1)
|
|
6
|
-
fileutils (~> 0.7)
|
|
7
|
-
pg (~> 0.18)
|
|
8
|
-
pry (~> 0.10.3)
|
|
9
|
-
rack (~> 1.6.4)
|
|
10
|
-
thor (~> 0.19)
|
|
11
|
-
|
|
12
|
-
GEM
|
|
13
|
-
remote: https://rubygems.org/
|
|
14
|
-
specs:
|
|
15
|
-
activesupport (4.2.5.1)
|
|
16
|
-
i18n (~> 0.7)
|
|
17
|
-
json (~> 1.7, >= 1.7.7)
|
|
18
|
-
minitest (~> 5.1)
|
|
19
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
|
20
|
-
tzinfo (~> 1.1)
|
|
21
|
-
coderay (1.1.1)
|
|
22
|
-
diff-lcs (1.2.5)
|
|
23
|
-
fileutils (0.7)
|
|
24
|
-
rmagick (>= 2.13.1)
|
|
25
|
-
i18n (0.7.0)
|
|
26
|
-
json (1.8.3)
|
|
27
|
-
method_source (0.8.2)
|
|
28
|
-
minitest (5.8.4)
|
|
29
|
-
pg (0.18.4)
|
|
30
|
-
pry (0.10.3)
|
|
31
|
-
coderay (~> 1.1.0)
|
|
32
|
-
method_source (~> 0.8.1)
|
|
33
|
-
slop (~> 3.4)
|
|
34
|
-
rack (1.6.4)
|
|
35
|
-
rake (10.5.0)
|
|
36
|
-
rmagick (2.15.4)
|
|
37
|
-
rspec (3.1.0)
|
|
38
|
-
rspec-core (~> 3.1.0)
|
|
39
|
-
rspec-expectations (~> 3.1.0)
|
|
40
|
-
rspec-mocks (~> 3.1.0)
|
|
41
|
-
rspec-core (3.1.7)
|
|
42
|
-
rspec-support (~> 3.1.0)
|
|
43
|
-
rspec-expectations (3.1.2)
|
|
44
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
45
|
-
rspec-support (~> 3.1.0)
|
|
46
|
-
rspec-mocks (3.1.3)
|
|
47
|
-
rspec-support (~> 3.1.0)
|
|
48
|
-
rspec-support (3.1.2)
|
|
49
|
-
slop (3.6.0)
|
|
50
|
-
thor (0.19.1)
|
|
51
|
-
thread_safe (0.3.5)
|
|
52
|
-
tzinfo (1.2.2)
|
|
53
|
-
thread_safe (~> 0.1)
|
|
54
|
-
|
|
55
|
-
PLATFORMS
|
|
56
|
-
ruby
|
|
57
|
-
|
|
58
|
-
DEPENDENCIES
|
|
59
|
-
bundler (~> 1.11)
|
|
60
|
-
puffs!
|
|
61
|
-
rake (~> 10.0)
|
|
62
|
-
rspec (~> 3.0)
|
|
63
|
-
|
|
64
|
-
BUNDLED WITH
|
|
65
|
-
1.11.2
|