scenic 0.2.0 → 0.2.1
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/NEWS.md +4 -6
- data/README.md +44 -10
- data/lib/generators/scenic/view/view_generator.rb +11 -1
- data/lib/scenic/version.rb +1 -1
- data/spec/support/generator_spec_setup.rb +1 -0
- metadata +3 -5
- data/spec/dummy/db/views/.keep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12cc4c93551c150598dd616a1174245760aac19e
|
4
|
+
data.tar.gz: b108ebf2b5d3b3e4d2d3e70410233773ce09481d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be0ede1893de56e1b53309b4cb8bdb035e9e03b573252390214a448c85a6d8bb6e9cd3b0f85a3b0bb8438442497dd24c29a959e6429e74e7fe9e0a272cefc09d
|
7
|
+
data.tar.gz: c4753f41f39bb769246e6793e426a63e899bc0873f74b685dd6644755a6fabc4e6ab4edfe996bd1c631e3735d44c4ab5826daa73b73073191a73091a6a2867e0
|
data/NEWS.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
*Caleb Thompson*
|
1
|
+
New in 0.2.1
|
2
|
+
* View generator will now create `db/views` directory if necessary
|
5
3
|
|
4
|
+
New in 0.2.0
|
5
|
+
* Teach view generator to update existing views [683361d](https://github.com/thoughtbot/scenic/commit/683361d59410f46aba508a3ceb850161dd0be027)
|
6
6
|
* Raise an error if view definition is empty. [PR #38](https://github.com/thoughtbot/scenic/issues/38)
|
7
|
-
|
8
|
-
*Caleb Thompson*
|
data/README.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|

|
4
4
|
|
5
|
+
**Scenic (v0.2.0) is in an early stage of development. While it hasn't been
|
6
|
+
tested in an actual application, we are relatively confident in its readiness
|
7
|
+
and value, and stand ready to help resolve any issues it may have**
|
8
|
+
|
5
9
|
## Description
|
6
10
|
|
7
11
|
Scenic adds methods to ActiveRecord::Migration to create and manage database
|
@@ -16,7 +20,7 @@ get full SQL syntax highlighting support in the editor of your choice.
|
|
16
20
|
## Great, how do I create a view?
|
17
21
|
|
18
22
|
You've got this great idea for a view you'd like to call `searches`. Create a
|
19
|
-
definition file at `db/views/
|
23
|
+
definition file at `db/views/searches_v01.sql` which contains the query you'd
|
20
24
|
like to build your view with. Perhaps that looks something like this:
|
21
25
|
|
22
26
|
```sql
|
@@ -49,7 +53,7 @@ reversible and it will be dumped into your `schema.rb` file.
|
|
49
53
|
|
50
54
|
## Cool, but what if I need to change that view?
|
51
55
|
|
52
|
-
Add the new query to `db/views/
|
56
|
+
Add the new query to `db/views/searches_v02.sql` and generate a new migration with
|
53
57
|
the following `change` method:
|
54
58
|
|
55
59
|
```ruby
|
@@ -77,6 +81,44 @@ class Search < ActiveRecord::Base
|
|
77
81
|
end
|
78
82
|
```
|
79
83
|
|
84
|
+
## Can you make this easier?
|
85
|
+
|
86
|
+
Sure thing. How about some generators?
|
87
|
+
|
88
|
+
### Model generator
|
89
|
+
|
90
|
+
The `scenic:model` generator builds you a model, view, and migration from
|
91
|
+
scratch. `db/views/[model]_v01.sql` wil be an empty file that you fill in only
|
92
|
+
the [query] portion of the view with.
|
93
|
+
|
94
|
+
[query]: http://www.postgresql.org/docs/current/static/sql-createview.html
|
95
|
+
|
96
|
+
```
|
97
|
+
$ rails generate scenic:model search
|
98
|
+
create app/models/search.rb
|
99
|
+
create db/views/searches_v01.sql
|
100
|
+
create db/migrate/[TIMESTAMP]_create_searches.rb
|
101
|
+
```
|
102
|
+
|
103
|
+
### View generator
|
104
|
+
|
105
|
+
The `scenic:view` generator is functionally equivalent to `scenic:model` except
|
106
|
+
that it doesn't create the model. Convenient.
|
107
|
+
|
108
|
+
```
|
109
|
+
$ rails generate scenic:view search
|
110
|
+
create db/views/searches_v01.sql
|
111
|
+
create db/migrate/[TIMESTAMP]_create_searches.rb
|
112
|
+
```
|
113
|
+
|
114
|
+
Subsequent invocations will create updated view versions and update migrations:
|
115
|
+
|
116
|
+
```
|
117
|
+
rails generate scenic:view search
|
118
|
+
create db/views/searches_v02.sql
|
119
|
+
create db/migrate/[TIMESTAMP]_update_searches_to_version_2.rb
|
120
|
+
```
|
121
|
+
|
80
122
|
## I don't need this view anymore. Make it go away.
|
81
123
|
|
82
124
|
We give you `drop_view` too:
|
@@ -86,11 +128,3 @@ def change
|
|
86
128
|
drop_view :searches, revert_to_version: 2
|
87
129
|
end
|
88
130
|
```
|
89
|
-
|
90
|
-
## Can you make this easier?
|
91
|
-
|
92
|
-
Yeah, we're working on it. We're going to provide some generators that will take
|
93
|
-
some of the busy work of file creation away. We'll create the SQL file, the
|
94
|
-
migration, and optionally the model for you.
|
95
|
-
|
96
|
-
Check out the issue tracker for our other plans.
|
@@ -7,6 +7,12 @@ module Scenic
|
|
7
7
|
include Rails::Generators::Migration
|
8
8
|
source_root File.expand_path("../templates", __FILE__)
|
9
9
|
|
10
|
+
def create_views_directory
|
11
|
+
unless views_directory_path.exist?
|
12
|
+
empty_directory(views_directory_path)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
10
16
|
def create_view_definition
|
11
17
|
create_file definition.path
|
12
18
|
end
|
@@ -32,7 +38,7 @@ module Scenic
|
|
32
38
|
no_tasks do
|
33
39
|
def previous_version
|
34
40
|
@previous_version ||=
|
35
|
-
Dir.entries(
|
41
|
+
Dir.entries(views_directory_path)
|
36
42
|
.map { |name| version_regex.match(name).try(:[], "version").to_i }
|
37
43
|
.max
|
38
44
|
end
|
@@ -52,6 +58,10 @@ module Scenic
|
|
52
58
|
|
53
59
|
private
|
54
60
|
|
61
|
+
def views_directory_path
|
62
|
+
@views_directory_path ||= Rails.root.join(*%w(db views))
|
63
|
+
end
|
64
|
+
|
55
65
|
def version_regex
|
56
66
|
/\A#{plural_file_name}_v(?<version>\d+)\.sql\z/
|
57
67
|
end
|
data/lib/scenic/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scenic
|
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
|
- Derek Prior
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -186,7 +186,6 @@ files:
|
|
186
186
|
- spec/dummy/config/environments/development.rb
|
187
187
|
- spec/dummy/config/environments/test.rb
|
188
188
|
- spec/dummy/db/migrate/.keep
|
189
|
-
- spec/dummy/db/views/.keep
|
190
189
|
- spec/generators/scenic/model/model_generator_spec.rb
|
191
190
|
- spec/generators/scenic/view/view_generator_spec.rb
|
192
191
|
- spec/integration/revert_spec.rb
|
@@ -220,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
219
|
version: '0'
|
221
220
|
requirements: []
|
222
221
|
rubyforge_project:
|
223
|
-
rubygems_version: 2.
|
222
|
+
rubygems_version: 2.4.5
|
224
223
|
signing_key:
|
225
224
|
specification_version: 4
|
226
225
|
summary: Support for database views in Rails migrations
|
@@ -238,7 +237,6 @@ test_files:
|
|
238
237
|
- spec/dummy/config/environments/development.rb
|
239
238
|
- spec/dummy/config/environments/test.rb
|
240
239
|
- spec/dummy/db/migrate/.keep
|
241
|
-
- spec/dummy/db/views/.keep
|
242
240
|
- spec/generators/scenic/model/model_generator_spec.rb
|
243
241
|
- spec/generators/scenic/view/view_generator_spec.rb
|
244
242
|
- spec/integration/revert_spec.rb
|
data/spec/dummy/db/views/.keep
DELETED
File without changes
|