katapult 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/README.md +61 -35
- data/bin/katapult +24 -34
- data/features/authenticate.feature +344 -0
- data/features/basics.feature +590 -0
- data/features/binary.feature +33 -1
- data/features/model.feature +9 -13
- data/features/step_definitions/rails_steps.rb +3 -2
- data/features/wui.feature +49 -4
- data/lib/generators/katapult/basics/basics_generator.rb +63 -17
- data/lib/generators/katapult/basics/templates/.gitignore +1 -0
- data/lib/generators/katapult/basics/templates/.ruby-version +1 -1
- data/lib/generators/katapult/basics/templates/Capfile +25 -0
- data/lib/generators/katapult/basics/templates/Gemfile +14 -6
- data/lib/generators/katapult/basics/templates/Guardfile +44 -0
- data/lib/generators/katapult/basics/templates/config/database.sample.yml +3 -2
- data/lib/generators/katapult/basics/templates/config/database.yml +3 -2
- data/lib/generators/katapult/basics/templates/config/deploy/production.rb +8 -0
- data/lib/generators/katapult/basics/templates/config/deploy/staging.rb +7 -0
- data/lib/generators/katapult/basics/templates/config/deploy.rb +37 -0
- data/lib/generators/katapult/basics/templates/config/initializers/ext.rb +3 -0
- data/lib/generators/katapult/basics/templates/features/support/factory_girl.rb +1 -0
- data/lib/generators/katapult/basics/templates/features/support/paths.rb +6 -0
- data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/db.rake +28 -0
- data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/deploy.rake +15 -0
- data/lib/generators/katapult/basics/templates/lib/capistrano/tasks/passenger.rake +8 -0
- data/lib/generators/katapult/basics/templates/{config/initializers → lib/ext/action_view}/form_for_with_development_errors.rb +0 -2
- data/lib/generators/katapult/basics/templates/lib/ext/action_view/spec_label.rb +46 -0
- data/lib/generators/katapult/basics/templates/{config/initializers → lib/ext/active_record}/find_by_anything.rb +0 -0
- data/lib/generators/katapult/basics/templates/lib/ext/active_record/these.rb +7 -0
- data/lib/generators/katapult/basics/templates/lib/ext/array/xss_aware_join.rb +10 -0
- data/lib/generators/katapult/basics/templates/lib/ext/enumerable/natural_sort.rb +15 -0
- data/lib/generators/katapult/basics/templates/lib/ext/hash/infinite.rb +7 -0
- data/lib/generators/katapult/basics/templates/lib/ext/string/html_entities.rb +11 -0
- data/lib/generators/katapult/basics/templates/lib/ext/string/to_sort_atoms.rb +52 -0
- data/lib/generators/katapult/basics/templates/lib/tasks/pending_migrations.rake +24 -0
- data/lib/generators/katapult/basics/templates/spec/factories/factories.rb +9 -0
- data/lib/generators/katapult/basics/templates/spec/support/factory_girl.rb +3 -0
- data/lib/generators/katapult/clearance/clearance_generator.rb +125 -0
- data/lib/generators/katapult/clearance/templates/app/controllers/passwords_controller.rb +16 -0
- data/lib/generators/katapult/clearance/templates/app/views/clearance_mailer/change_password.html.haml +6 -0
- data/lib/generators/katapult/clearance/templates/app/views/clearance_mailer/change_password.text.erb +3 -0
- data/lib/generators/katapult/clearance/templates/app/views/passwords/create.html.haml +5 -0
- data/lib/generators/katapult/clearance/templates/app/views/passwords/edit.html.haml +16 -0
- data/lib/generators/katapult/clearance/templates/app/views/passwords/new.html.haml +14 -0
- data/lib/generators/katapult/clearance/templates/app/views/sessions/new.html.haml +19 -0
- data/lib/generators/katapult/clearance/templates/config/initializers/clearance.rb +15 -0
- data/lib/generators/katapult/clearance/templates/config/locales/clearance.en.yml +59 -0
- data/lib/generators/katapult/clearance/templates/features/authentication.feature +94 -0
- data/lib/generators/katapult/clearance/templates/features/step_definitions/authentication_steps.rb +4 -0
- data/lib/generators/katapult/cucumber_features/templates/feature.feature +11 -7
- data/lib/generators/katapult/haml/haml_generator.rb +5 -0
- data/lib/generators/katapult/haml/templates/_form.html.haml +4 -4
- data/lib/generators/katapult/haml/templates/app/views/layouts/_flashes.html.haml +3 -0
- data/lib/generators/katapult/haml/templates/app/views/layouts/application.html.haml +9 -3
- data/lib/generators/katapult/haml/templates/index.html.haml +1 -1
- data/lib/generators/katapult/haml/templates/show.html.haml +2 -4
- data/lib/generators/katapult/install/templates/lib/katapult/application_model.rb +9 -7
- data/lib/generators/katapult/model/model_generator.rb +1 -1
- data/lib/generators/katapult/w_u_i/templates/controller.rb +1 -1
- data/lib/generators/katapult/w_u_i/w_u_i_generator.rb +4 -2
- data/lib/katapult/application_model.rb +8 -1
- data/lib/katapult/attribute.rb +10 -11
- data/lib/katapult/authentication.rb +25 -0
- data/lib/katapult/binary_util.rb +37 -0
- data/lib/katapult/element.rb +1 -1
- data/lib/katapult/generator.rb +6 -0
- data/lib/katapult/model.rb +13 -1
- data/lib/katapult/parser.rb +7 -0
- data/lib/katapult/version.rb +1 -1
- data/lib/katapult/wui.rb +4 -0
- data/lib/katapult.rb +2 -0
- data/spec/attribute_spec.rb +13 -0
- data/spec/element_spec.rb +5 -0
- data/spec/model_spec.rb +5 -4
- data/spec/util_spec.rb +8 -8
- data/spec/wui_spec.rb +19 -0
- metadata +44 -8
- data/features/katapult.feature +0 -271
- data/lib/katapult/util.rb +0 -16
@@ -17,7 +17,7 @@
|
|
17
17
|
%td
|
18
18
|
.items__actions
|
19
19
|
= link_to 'Edit', <%= wui.path(:edit, object_name) %>, class: 'items__action'
|
20
|
-
= link_to 'Destroy', <%= wui.path(:destroy, object_name) %>, method: :delete, class: 'items__action', confirm: 'Really destroy?'
|
20
|
+
= link_to 'Destroy', <%= wui.path(:destroy, object_name) %>, method: :delete, class: 'items__action', data: { confirm: 'Really destroy?' }, title: "Destroy #{<%= object_name %>.to_s}"
|
21
21
|
<%- wui.custom_actions.select(&:member?).each do |action| -%>
|
22
22
|
= link_to '<%= action.name.humanize.titleize %>', <%= wui.path(action, object_name) %>, class: 'items__action'<%=
|
23
23
|
", method: :#{action.method}" unless action.get?
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<% end -%>
|
13
13
|
|
14
14
|
%dl.values
|
15
|
-
<% wui.model.
|
15
|
+
<% wui.model.renderable_attrs.each do |attribute| -%>
|
16
16
|
<%- model_attribute = "#{model_name(:ivar)}.#{attribute.name}" -%>
|
17
17
|
%dt
|
18
18
|
= <%= model_name(:class) %>.human_attribute_name(:<%= attribute.name %>)
|
@@ -31,11 +31,9 @@
|
|
31
31
|
€
|
32
32
|
<%- when :text -%>
|
33
33
|
= simple_format(<%= model_attribute %>)
|
34
|
-
<%- when :markdown -%>
|
35
|
-
= markdown(<%= model_attribute %>)
|
36
34
|
<%- when :flag -%>
|
37
35
|
= <%= model_attribute %> ? 'Yes' : 'No'
|
38
36
|
<%- when :datetime -%>
|
39
|
-
= l(<%= model_attribute
|
37
|
+
= l(<%= model_attribute %>.to_date) if <%= model_attribute %>
|
40
38
|
<%- end -%>
|
41
39
|
<%- end -%>
|
@@ -1,18 +1,20 @@
|
|
1
1
|
# Here you define the fundamentals of your application.
|
2
2
|
#
|
3
3
|
# Add a model:
|
4
|
-
# model '
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
4
|
+
# model 'user' do |user|
|
5
|
+
# user.attr :name
|
6
|
+
# user.attr :birth, type: :datetime
|
7
|
+
# user.attr :email
|
8
8
|
# end
|
9
9
|
#
|
10
10
|
# Add a web user interface:
|
11
|
-
# wui '
|
12
|
-
# wui.
|
13
|
-
# wui.action :show
|
11
|
+
# wui 'user' do |wui|
|
12
|
+
# wui.crud # Creates all CRUD actions: index, new, show, etc.
|
14
13
|
# wui.action :lock, scope: :member, method: :post
|
15
14
|
# end
|
16
15
|
#
|
17
16
|
# Add navigation
|
18
17
|
# navigation :main
|
18
|
+
#
|
19
|
+
# Add authentication
|
20
|
+
# authenticate 'user', system_email: 'system@example.com'
|
@@ -15,7 +15,7 @@ module Katapult
|
|
15
15
|
|
16
16
|
def create_migration_file
|
17
17
|
migration_name = "create_#{table_name}"
|
18
|
-
migration_attributes = model.
|
18
|
+
migration_attributes = model.db_fields.map(&:for_migration)
|
19
19
|
|
20
20
|
args = [migration_name] + migration_attributes
|
21
21
|
options = { timestamps: true, force: true }
|
@@ -91,7 +91,7 @@ class <%= model_name(:classes) %>Controller < ApplicationController
|
|
91
91
|
|
92
92
|
def <%= method_name(:params) %>
|
93
93
|
<%= method_name(:params) %> = params[:<%= model_name(:variable) %>]
|
94
|
-
<%= method_name(:params) %> ? <%= method_name(:params) %>.permit(<%= wui.model.attrs.map(&:name).
|
94
|
+
<%= method_name(:params) %> ? <%= method_name(:params) %>.permit(%i[<%= wui.model.attrs.map(&:name).join(' ') %>]) : {}
|
95
95
|
end
|
96
96
|
|
97
97
|
def <%= method_name(:scope) %>
|
@@ -21,14 +21,16 @@ module Katapult
|
|
21
21
|
route = model_name(:symbols)
|
22
22
|
routes = File.read('config/routes.rb')
|
23
23
|
|
24
|
-
if routes
|
24
|
+
if routes =~ /^\s+resources #{ route }/
|
25
25
|
say_status :warn, <<MESSAGE, :red
|
26
26
|
Routes for #{ route } already exist! Not updated.
|
27
27
|
|
28
28
|
In order to keep existing routes created by the user, the config/routes.rb file
|
29
|
-
is not wiped on model transformation. To have Katapult update the #{ route}
|
29
|
+
is not wiped on model transformation. To have Katapult update the #{ route }
|
30
30
|
route for you, delete it before transforming the application model.
|
31
31
|
MESSAGE
|
32
|
+
elsif wui.crud_only?
|
33
|
+
route "resources #{ route }"
|
32
34
|
else
|
33
35
|
route render_partial('_route.rb')
|
34
36
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Katapult
|
4
4
|
class ApplicationModel
|
5
5
|
|
6
|
-
attr_reader :models, :wuis, :navigation
|
6
|
+
attr_reader :models, :wuis, :navigation, :authentication
|
7
7
|
|
8
8
|
def initialize
|
9
9
|
@models = []
|
@@ -33,12 +33,19 @@ module Katapult
|
|
33
33
|
@navigation = navigation
|
34
34
|
end
|
35
35
|
|
36
|
+
def set_authentication(auth)
|
37
|
+
auth.set_application_model(self)
|
38
|
+
auth.ensure_user_model_attributes_present
|
39
|
+
@authentication = auth
|
40
|
+
end
|
41
|
+
|
36
42
|
# ---
|
37
43
|
|
38
44
|
def render
|
39
45
|
models.each &:render
|
40
46
|
wuis.each &:render
|
41
47
|
navigation.render if navigation
|
48
|
+
authentication.render if authentication
|
42
49
|
end
|
43
50
|
|
44
51
|
end
|
data/lib/katapult/attribute.rb
CHANGED
@@ -8,16 +8,17 @@ require 'zlib'
|
|
8
8
|
module Katapult
|
9
9
|
class Attribute < Element
|
10
10
|
|
11
|
-
options :type, :default, :assignable_values, :allow_blank
|
11
|
+
options :type, :default, :assignable_values, :allow_blank, :skip_db
|
12
12
|
|
13
13
|
UnknownTypeError = Class.new(StandardError)
|
14
14
|
MissingOptionError = Class.new(StandardError)
|
15
|
-
TYPES = %i(string email url integer money text
|
15
|
+
TYPES = %i(string email password url integer money text flag datetime json plain_json)
|
16
16
|
|
17
17
|
def initialize(*args)
|
18
18
|
super
|
19
19
|
|
20
20
|
self.type ||= :email if name.to_s =~ /email/
|
21
|
+
self.type ||= :password if name.to_s =~ /password/
|
21
22
|
self.type ||= :string
|
22
23
|
|
23
24
|
validate
|
@@ -31,15 +32,12 @@ module Katapult
|
|
31
32
|
|
32
33
|
def for_migration
|
33
34
|
db_type = case type
|
34
|
-
when :email, :url
|
35
|
-
|
36
|
-
when :
|
37
|
-
|
38
|
-
when :
|
39
|
-
|
40
|
-
else
|
41
|
-
type
|
42
|
-
end
|
35
|
+
when :email, :url, :password then 'string'
|
36
|
+
when :flag then 'boolean'
|
37
|
+
when :money then 'decimal{10,2}' # {precision,scale} = total digits, decimal places
|
38
|
+
when :json then 'jsonb' # Indexable JSON
|
39
|
+
when :plain_json then 'json' # Only use this if you need to
|
40
|
+
else type end
|
43
41
|
|
44
42
|
"#{name}:#{db_type}"
|
45
43
|
end
|
@@ -51,6 +49,7 @@ module Katapult
|
|
51
49
|
else
|
52
50
|
case type
|
53
51
|
when :string then "#{name}-string"
|
52
|
+
when :password then "#{name}-password"
|
54
53
|
when :email then "#{name}@example.com"
|
55
54
|
when :url then "#{name}.example.com"
|
56
55
|
when :text then "#{name}-text"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'generators/katapult/clearance/clearance_generator'
|
2
|
+
|
3
|
+
module Katapult
|
4
|
+
class Authentication < Element
|
5
|
+
|
6
|
+
MissingUserModel = Class.new(StandardError)
|
7
|
+
|
8
|
+
# attr name: The user model name
|
9
|
+
attr_accessor :system_email
|
10
|
+
|
11
|
+
def ensure_user_model_attributes_present
|
12
|
+
user_model = application_model.get_model(name) or raise MissingUserModel,
|
13
|
+
"Could not find a model named #{ name }"
|
14
|
+
user_attrs = user_model.attrs.map(&:name)
|
15
|
+
|
16
|
+
user_model.attr(:email) unless user_attrs.include?('email')
|
17
|
+
user_model.attr(:password, type: :password, skip_db: true) unless user_attrs.include?('password')
|
18
|
+
end
|
19
|
+
|
20
|
+
def render
|
21
|
+
Generators::ClearanceGenerator.new(self).invoke_all
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Utility methods.
|
2
|
+
|
3
|
+
# The Katapult::Util module is used inside the `katapult` script. It should not
|
4
|
+
# require any gems in order to prevent version conflicts.
|
5
|
+
require_relative '../katapult'
|
6
|
+
require 'bundler'
|
7
|
+
|
8
|
+
module Katapult
|
9
|
+
module BinaryUtil
|
10
|
+
extend self
|
11
|
+
|
12
|
+
def git_commit(message, options = nil)
|
13
|
+
message.gsub! /'/, "" # remove single quotes
|
14
|
+
system "git add --all; git commit -m '#{ message }' --author='katapult <katapult@makandra.com>' #{ options }"
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_rails_app(name)
|
18
|
+
run "rails _#{ Katapult::RAILS_VERSION }_ new #{ name } --skip-test-unit --skip-bundle --database postgresql"
|
19
|
+
end
|
20
|
+
|
21
|
+
def puts(*args)
|
22
|
+
message = "\n> #{ args.join ' ' }"
|
23
|
+
Kernel.puts "\e[35m#{ message }\e[0m" # pink
|
24
|
+
end
|
25
|
+
|
26
|
+
# With clean Bundler env
|
27
|
+
def run(command)
|
28
|
+
success = Bundler.with_clean_env { system command }
|
29
|
+
|
30
|
+
if !success
|
31
|
+
puts 'x Something went wrong'
|
32
|
+
exit(1)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
data/lib/katapult/element.rb
CHANGED
data/lib/katapult/generator.rb
CHANGED
data/lib/katapult/model.rb
CHANGED
@@ -22,7 +22,19 @@ module Katapult
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def label_attr
|
25
|
-
|
25
|
+
renderable_attrs.first
|
26
|
+
end
|
27
|
+
|
28
|
+
def db_fields
|
29
|
+
attrs.reject(&:skip_db)
|
30
|
+
end
|
31
|
+
|
32
|
+
def renderable_attrs
|
33
|
+
attrs.reject { |a| %w[plain_json json password].include? a.type.to_s }
|
34
|
+
end
|
35
|
+
|
36
|
+
def editable_attrs
|
37
|
+
attrs.reject { |a| %w[plain_json json].include? a.type.to_s }
|
26
38
|
end
|
27
39
|
|
28
40
|
def render
|
data/lib/katapult/parser.rb
CHANGED
@@ -5,6 +5,7 @@ require_relative 'application_model'
|
|
5
5
|
require 'katapult/model'
|
6
6
|
require 'katapult/wui'
|
7
7
|
require 'katapult/navigation'
|
8
|
+
require 'katapult/authentication'
|
8
9
|
|
9
10
|
module Katapult
|
10
11
|
class Parser
|
@@ -31,6 +32,12 @@ module Katapult
|
|
31
32
|
application_model.set_navigation Navigation.new(name)
|
32
33
|
end
|
33
34
|
|
35
|
+
def authenticate(name, system_email:)
|
36
|
+
application_model.set_authentication Authentication.new(name,
|
37
|
+
system_email: system_email
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
34
41
|
private
|
35
42
|
|
36
43
|
attr_accessor :application_model
|
data/lib/katapult/version.rb
CHANGED
data/lib/katapult/wui.rb
CHANGED
@@ -34,6 +34,10 @@ module Katapult
|
|
34
34
|
%i(index show create update destroy).each &method(:action)
|
35
35
|
end
|
36
36
|
|
37
|
+
def crud_only?
|
38
|
+
actions.map(&:name).sort == RAILS_ACTIONS.sort
|
39
|
+
end
|
40
|
+
|
37
41
|
def model
|
38
42
|
model_name = @model || self.name
|
39
43
|
application_model.get_model(model_name) or raise UnknownModelError,
|
data/lib/katapult.rb
CHANGED
data/spec/attribute_spec.rb
CHANGED
@@ -32,6 +32,19 @@ describe Katapult::Attribute do
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
describe 'password attributes' do
|
36
|
+
it 'recognizes password attributes' do
|
37
|
+
expect(described_class.new('password').type).to eql(:password)
|
38
|
+
expect(described_class.new('encrypted_password').type).to eql(:password)
|
39
|
+
expect(described_class.new('name').type).to_not eql(:password)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'does not overwrite a given type' do
|
43
|
+
expect(described_class.new('password', type: :string).type).to eql(:string)
|
44
|
+
expect(described_class.new('password_updated_at', type: :datetime).type).to eql(:datetime)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
35
48
|
describe 'email attributes' do
|
36
49
|
it 'recognizes email attributes' do
|
37
50
|
expect(described_class.new('email').type).to eql(:email)
|
data/spec/element_spec.rb
CHANGED
@@ -11,6 +11,11 @@ describe Katapult::Element do
|
|
11
11
|
end.to raise_error(Katapult::Element::UnknownFormattingError,
|
12
12
|
'Unknown name formatting: :foobar')
|
13
13
|
end
|
14
|
+
|
15
|
+
it 'properly spells human names' do
|
16
|
+
subject = described_class.new('complex_name')
|
17
|
+
expect(subject.name(:human)).to eq 'complex name'
|
18
|
+
end
|
14
19
|
end
|
15
20
|
|
16
21
|
end
|
data/spec/model_spec.rb
CHANGED
@@ -7,11 +7,12 @@ describe Katapult::Model do
|
|
7
7
|
subject { described_class.new('model') }
|
8
8
|
|
9
9
|
describe '#label_attr' do
|
10
|
-
it 'returns the model’s first attribute' do
|
11
|
-
subject.attr
|
12
|
-
subject.attr
|
10
|
+
it 'returns the model’s first renderable attribute' do
|
11
|
+
subject.attr 'first_attr', type: :json
|
12
|
+
subject.attr 'second_attr'
|
13
|
+
subject.attr 'third_attr'
|
13
14
|
|
14
|
-
expect(subject.label_attr.name).to eql('
|
15
|
+
expect(subject.label_attr.name).to eql('second_attr')
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
data/spec/util_spec.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'katapult/
|
2
|
+
require 'katapult/binary_util'
|
3
3
|
|
4
|
-
describe Katapult::
|
4
|
+
describe Katapult::BinaryUtil do
|
5
5
|
|
6
6
|
describe '#git_commit' do
|
7
7
|
it 'adds all files before committing' do
|
8
|
-
allow(Katapult::
|
9
|
-
Katapult::
|
8
|
+
allow(Katapult::BinaryUtil).to receive(:system).with(/git add --all; git commit/)
|
9
|
+
Katapult::BinaryUtil.git_commit 'test'
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'sets "katapult" as commit author' do
|
13
|
-
allow(Katapult::
|
14
|
-
Katapult::
|
13
|
+
allow(Katapult::BinaryUtil).to receive(:system).with(/git commit.*--author='katapult \<katapult@makandra\.com\>'/)
|
14
|
+
Katapult::BinaryUtil.git_commit 'test'
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'sanitizes the commit message' do
|
18
|
-
allow(Katapult::
|
19
|
-
Katapult::
|
18
|
+
allow(Katapult::BinaryUtil).to receive(:system).with(/git commit -m '"hack0r"'/)
|
19
|
+
Katapult::BinaryUtil.git_commit "\"hack''''0r\""
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
data/spec/wui_spec.rb
CHANGED
@@ -17,6 +17,25 @@ describe Katapult::WUI do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
describe '#crud_only?' do
|
21
|
+
it 'is true for a crud WUI' do
|
22
|
+
subject.crud
|
23
|
+
expect(subject.crud_only?).to be true
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'is false if the WUI has custom actions' do
|
27
|
+
subject.crud
|
28
|
+
subject.action :custom, method: :get, scope: :collection
|
29
|
+
expect(subject.crud_only?).to be false
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'is false if the WUI does not have all CRUD actions' do
|
33
|
+
subject.action :index
|
34
|
+
subject.action :show
|
35
|
+
expect(subject.crud_only?).to be false
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
20
39
|
describe '#model' do
|
21
40
|
it 'returns the model object' do
|
22
41
|
subject = described_class.new('Customer', model: 'User')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: katapult
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominik Schöler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -139,9 +139,10 @@ files:
|
|
139
139
|
- README.md
|
140
140
|
- Rakefile
|
141
141
|
- bin/katapult
|
142
|
+
- features/authenticate.feature
|
143
|
+
- features/basics.feature
|
142
144
|
- features/binary.feature
|
143
145
|
- features/configuration.feature
|
144
|
-
- features/katapult.feature
|
145
146
|
- features/model.feature
|
146
147
|
- features/navigation.feature
|
147
148
|
- features/step_definitions/db_steps.rb
|
@@ -156,7 +157,9 @@ files:
|
|
156
157
|
- lib/generators/katapult/basics/basics_generator.rb
|
157
158
|
- lib/generators/katapult/basics/templates/.gitignore
|
158
159
|
- lib/generators/katapult/basics/templates/.ruby-version
|
160
|
+
- lib/generators/katapult/basics/templates/Capfile
|
159
161
|
- lib/generators/katapult/basics/templates/Gemfile
|
162
|
+
- lib/generators/katapult/basics/templates/Guardfile
|
160
163
|
- lib/generators/katapult/basics/templates/app/assets/stylesheets/application.sass
|
161
164
|
- lib/generators/katapult/basics/templates/app/assets/stylesheets/application/blocks/_all.sass
|
162
165
|
- lib/generators/katapult/basics/templates/app/assets/stylesheets/application/blocks/_items.sass
|
@@ -166,21 +169,52 @@ files:
|
|
166
169
|
- lib/generators/katapult/basics/templates/config/cucumber.yml
|
167
170
|
- lib/generators/katapult/basics/templates/config/database.sample.yml
|
168
171
|
- lib/generators/katapult/basics/templates/config/database.yml
|
172
|
+
- lib/generators/katapult/basics/templates/config/deploy.rb
|
173
|
+
- lib/generators/katapult/basics/templates/config/deploy/production.rb
|
174
|
+
- lib/generators/katapult/basics/templates/config/deploy/staging.rb
|
169
175
|
- lib/generators/katapult/basics/templates/config/initializers/exception_notification.rb.tt
|
170
|
-
- lib/generators/katapult/basics/templates/config/initializers/
|
171
|
-
- lib/generators/katapult/basics/templates/config/initializers/form_for_with_development_errors.rb
|
176
|
+
- lib/generators/katapult/basics/templates/config/initializers/ext.rb
|
172
177
|
- lib/generators/katapult/basics/templates/config/spring.rb
|
173
178
|
- lib/generators/katapult/basics/templates/features/support/capybara_screenshot.rb
|
174
179
|
- lib/generators/katapult/basics/templates/features/support/cucumber_factory.rb
|
175
180
|
- lib/generators/katapult/basics/templates/features/support/database_cleaner.rb
|
176
181
|
- lib/generators/katapult/basics/templates/features/support/env-custom.rb
|
182
|
+
- lib/generators/katapult/basics/templates/features/support/factory_girl.rb
|
177
183
|
- lib/generators/katapult/basics/templates/features/support/paths.rb
|
178
184
|
- lib/generators/katapult/basics/templates/features/support/selectors.rb
|
185
|
+
- lib/generators/katapult/basics/templates/lib/capistrano/tasks/db.rake
|
186
|
+
- lib/generators/katapult/basics/templates/lib/capistrano/tasks/deploy.rake
|
187
|
+
- lib/generators/katapult/basics/templates/lib/capistrano/tasks/passenger.rake
|
188
|
+
- lib/generators/katapult/basics/templates/lib/ext/action_view/form_for_with_development_errors.rb
|
189
|
+
- lib/generators/katapult/basics/templates/lib/ext/action_view/spec_label.rb
|
190
|
+
- lib/generators/katapult/basics/templates/lib/ext/active_record/find_by_anything.rb
|
191
|
+
- lib/generators/katapult/basics/templates/lib/ext/active_record/these.rb
|
192
|
+
- lib/generators/katapult/basics/templates/lib/ext/array/xss_aware_join.rb
|
193
|
+
- lib/generators/katapult/basics/templates/lib/ext/enumerable/natural_sort.rb
|
194
|
+
- lib/generators/katapult/basics/templates/lib/ext/hash/infinite.rb
|
195
|
+
- lib/generators/katapult/basics/templates/lib/ext/string/html_entities.rb
|
196
|
+
- lib/generators/katapult/basics/templates/lib/ext/string/to_sort_atoms.rb
|
197
|
+
- lib/generators/katapult/basics/templates/lib/tasks/pending_migrations.rake
|
198
|
+
- lib/generators/katapult/basics/templates/spec/factories/factories.rb
|
199
|
+
- lib/generators/katapult/basics/templates/spec/support/factory_girl.rb
|
179
200
|
- lib/generators/katapult/basics/templates/spec/support/shoulda_matchers.rb
|
201
|
+
- lib/generators/katapult/clearance/clearance_generator.rb
|
202
|
+
- lib/generators/katapult/clearance/templates/app/controllers/passwords_controller.rb
|
203
|
+
- lib/generators/katapult/clearance/templates/app/views/clearance_mailer/change_password.html.haml
|
204
|
+
- lib/generators/katapult/clearance/templates/app/views/clearance_mailer/change_password.text.erb
|
205
|
+
- lib/generators/katapult/clearance/templates/app/views/passwords/create.html.haml
|
206
|
+
- lib/generators/katapult/clearance/templates/app/views/passwords/edit.html.haml
|
207
|
+
- lib/generators/katapult/clearance/templates/app/views/passwords/new.html.haml
|
208
|
+
- lib/generators/katapult/clearance/templates/app/views/sessions/new.html.haml
|
209
|
+
- lib/generators/katapult/clearance/templates/config/initializers/clearance.rb
|
210
|
+
- lib/generators/katapult/clearance/templates/config/locales/clearance.en.yml
|
211
|
+
- lib/generators/katapult/clearance/templates/features/authentication.feature
|
212
|
+
- lib/generators/katapult/clearance/templates/features/step_definitions/authentication_steps.rb
|
180
213
|
- lib/generators/katapult/cucumber_features/cucumber_features_generator.rb
|
181
214
|
- lib/generators/katapult/cucumber_features/templates/feature.feature
|
182
215
|
- lib/generators/katapult/haml/haml_generator.rb
|
183
216
|
- lib/generators/katapult/haml/templates/_form.html.haml
|
217
|
+
- lib/generators/katapult/haml/templates/app/views/layouts/_flashes.html.haml
|
184
218
|
- lib/generators/katapult/haml/templates/app/views/layouts/application.html.haml
|
185
219
|
- lib/generators/katapult/haml/templates/custom_action.html.haml
|
186
220
|
- lib/generators/katapult/haml/templates/edit.html.haml
|
@@ -204,12 +238,13 @@ files:
|
|
204
238
|
- lib/katapult/action.rb
|
205
239
|
- lib/katapult/application_model.rb
|
206
240
|
- lib/katapult/attribute.rb
|
241
|
+
- lib/katapult/authentication.rb
|
242
|
+
- lib/katapult/binary_util.rb
|
207
243
|
- lib/katapult/element.rb
|
208
244
|
- lib/katapult/generator.rb
|
209
245
|
- lib/katapult/model.rb
|
210
246
|
- lib/katapult/navigation.rb
|
211
247
|
- lib/katapult/parser.rb
|
212
|
-
- lib/katapult/util.rb
|
213
248
|
- lib/katapult/version.rb
|
214
249
|
- lib/katapult/wui.rb
|
215
250
|
- script/console
|
@@ -240,14 +275,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
240
275
|
version: '0'
|
241
276
|
requirements: []
|
242
277
|
rubyforge_project:
|
243
|
-
rubygems_version: 2.
|
278
|
+
rubygems_version: 2.5.1
|
244
279
|
signing_key:
|
245
280
|
specification_version: 4
|
246
281
|
summary: Kickstart Rails development
|
247
282
|
test_files:
|
283
|
+
- features/authenticate.feature
|
284
|
+
- features/basics.feature
|
248
285
|
- features/binary.feature
|
249
286
|
- features/configuration.feature
|
250
|
-
- features/katapult.feature
|
251
287
|
- features/model.feature
|
252
288
|
- features/navigation.feature
|
253
289
|
- features/step_definitions/db_steps.rb
|