myrails 1.0.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.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +74 -0
  5. data/Rakefile +6 -0
  6. data/bin/console +14 -0
  7. data/bin/myrails +3 -0
  8. data/bin/setup +8 -0
  9. data/lib/myrails/templates/assets/animate.scss +3340 -0
  10. data/lib/myrails/templates/assets/application.css.sass +6 -0
  11. data/lib/myrails/templates/assets/application.js +10 -0
  12. data/lib/myrails/templates/assets/bootstrap_themes/cerulean.scss +11 -0
  13. data/lib/myrails/templates/assets/bootstrap_themes/cosmo.scss +11 -0
  14. data/lib/myrails/templates/assets/bootstrap_themes/cyborg.scss +11 -0
  15. data/lib/myrails/templates/assets/bootstrap_themes/darkly.scss +11 -0
  16. data/lib/myrails/templates/assets/bootstrap_themes/flatly.scss +11 -0
  17. data/lib/myrails/templates/assets/bootstrap_themes/journal.scss +11 -0
  18. data/lib/myrails/templates/assets/bootstrap_themes/lumen.scss +11 -0
  19. data/lib/myrails/templates/assets/bootstrap_themes/paper.scss +11 -0
  20. data/lib/myrails/templates/assets/bootstrap_themes/readable.scss +11 -0
  21. data/lib/myrails/templates/assets/bootstrap_themes/sandstone.scss +11 -0
  22. data/lib/myrails/templates/assets/bootstrap_themes/simplex.scss +11 -0
  23. data/lib/myrails/templates/assets/bootstrap_themes/slate.scss +11 -0
  24. data/lib/myrails/templates/assets/bootstrap_themes/spacelab.scss +11 -0
  25. data/lib/myrails/templates/assets/bootstrap_themes/superhero.scss +11 -0
  26. data/lib/myrails/templates/assets/bootstrap_themes/united.scss +11 -0
  27. data/lib/myrails/templates/assets/bootstrap_themes/yeti.scss +11 -0
  28. data/lib/myrails/templates/assets/will_paginate.scss +104 -0
  29. data/lib/myrails/templates/db/mysql_database.yml +55 -0
  30. data/lib/myrails/templates/db/sqlite3_database.yml +28 -0
  31. data/lib/myrails/templates/heroku/Procfile +1 -0
  32. data/lib/myrails/templates/heroku/puma.rb +15 -0
  33. data/lib/myrails/templates/layout/_error_messages.html.haml +6 -0
  34. data/lib/myrails/templates/layout/_info_messages.html.haml +9 -0
  35. data/lib/myrails/templates/layout/_nav.html.haml +24 -0
  36. data/lib/myrails/templates/layout/_success_message.html.haml +3 -0
  37. data/lib/myrails/templates/layout/application.html.haml +14 -0
  38. data/lib/myrails/templates/layout/footers/css/footer-distributed-with-address-and-phones.scss +168 -0
  39. data/lib/myrails/templates/layout/footers/css/footer-distributed-with-contact-form.scss +200 -0
  40. data/lib/myrails/templates/layout/footers/css/footer-distributed-with-search.scss +140 -0
  41. data/lib/myrails/templates/layout/footers/css/footer-distributed.scss +74 -0
  42. data/lib/myrails/templates/layout/footers/footer-distributed-with-address-and-phones.html.haml +45 -0
  43. data/lib/myrails/templates/layout/footers/footer-distributed-with-contact-form.html.haml +33 -0
  44. data/lib/myrails/templates/layout/footers/footer-distributed-with-search.html.haml +19 -0
  45. data/lib/myrails/templates/layout/footers/footer-distributed.html.haml +24 -0
  46. data/lib/myrails/templates/mailer/dev_mail_interceptor.rb +27 -0
  47. data/lib/myrails/templates/mailer/sendgrid.rb +8 -0
  48. data/lib/myrails/templates/presenters/base.rb +33 -0
  49. data/lib/myrails/templates/presenters/presenter.rb +19 -0
  50. data/lib/myrails/templates/presenters/presenter_config.rb +4 -0
  51. data/lib/myrails/templates/presenters/presenter_spec.rb +17 -0
  52. data/lib/myrails/templates/rails/application_helper.rb +49 -0
  53. data/lib/myrails/templates/rails/controller.rb +12 -0
  54. data/lib/myrails/templates/rails/model.rb +2 -0
  55. data/lib/myrails/templates/rails/pundit.rb +26 -0
  56. data/lib/myrails/templates/rspec/controller.rb +98 -0
  57. data/lib/myrails/templates/rspec/database_cleaner.rb +18 -0
  58. data/lib/myrails/templates/rspec/devise.rb +38 -0
  59. data/lib/myrails/templates/rspec/factory.rb +5 -0
  60. data/lib/myrails/templates/rspec/factory_girl.rb +3 -0
  61. data/lib/myrails/templates/rspec/files.rb +3 -0
  62. data/lib/myrails/templates/rspec/javascript.rb +8 -0
  63. data/lib/myrails/templates/rspec/mailer.rb +7 -0
  64. data/lib/myrails/templates/rspec/model.rb +5 -0
  65. data/lib/myrails/templates/rspec/pundit.rb +28 -0
  66. data/lib/myrails/templates/rspec/pundit_matchers.rb +47 -0
  67. data/lib/myrails/templates/rspec/router.rb +7 -0
  68. data/lib/myrails/templates/rspec/shoulda_matchers.rb +16 -0
  69. data/lib/myrails/templates/rspec/silence_backtrace.rb +8 -0
  70. data/lib/myrails/templates/ui/index.html.haml +6 -0
  71. data/lib/myrails/templates/ui/ui_controller.rb +8 -0
  72. data/lib/myrails/version.rb +3 -0
  73. data/lib/myrails.rb +399 -0
  74. data/myrails.gemspec +37 -0
  75. data/spec/controllers/sam_controller_spec.rb +98 -0
  76. data/spec/myrails_spec.rb +11 -0
  77. data/spec/spec_helper.rb +2 -0
  78. metadata +197 -0
@@ -0,0 +1,27 @@
1
+ # @author Lovell McIlwain
2
+ #
3
+ # Mail interceptor for development and test emails
4
+ require 'socket'
5
+ class DevMailInterceptor
6
+ def self.delivering_email(message)
7
+ dev_text = "\n\n\n------------\n"
8
+ dev_text += "To address is: #{message.to.to_a.join(", ")}\n"
9
+ dev_text += "CC address is: #{message.cc.to_a.join(", ")}\n"
10
+ dev_text += "BCC address is: #{message.bcc.to_a.join(", ")}\n"
11
+
12
+ message.subject = "[#{Socket.gethostname}] [#{Rails.env}] #{message.subject}"
13
+ message.to = '<%= options[:email]%>'
14
+ message.cc = ""
15
+ message.bcc = ""
16
+ append_address_info(message, dev_text)
17
+ end
18
+
19
+ def self.append_address_info(part, dev_text)
20
+ case part.content_type
21
+ when %r{^text/plain} then part.body = part.body.to_s + dev_text
22
+ when %r{^text/html} then part.body = part.body.to_s + ("<pre>#{dev_text}</pre>").html_safe
23
+ end
24
+ part.parts.each { |p| append_address_info(p, dev_text)}
25
+ end
26
+
27
+ end
@@ -0,0 +1,8 @@
1
+ # config.action_mailer.delivery_method = :smtp
2
+ # config.action_mailer.smtp_settings = { address: 'smtp.sendgrid.net',
3
+ # port: 587,
4
+ # domain: 'yourdomain.com',
5
+ # user_name: 'someuser',
6
+ # password: 'somepassword',
7
+ # authentication: 'plain',
8
+ # enable_starttls_auto: true }
@@ -0,0 +1,33 @@
1
+ # @author Lovell McIlwain
2
+ #
3
+ # Class every presenter class should inherit from
4
+ class BasePresenter
5
+ # Initialize class with object to be presented and the view it is to be presented on
6
+ def initialize(object, template)
7
+ @object = object
8
+ @template = template
9
+ end
10
+
11
+ # Same as application helper short date
12
+ def format_date(date)
13
+ date.strftime("%Y-%m-%d")
14
+ end
15
+
16
+ private
17
+ # Class method to call the object by its class
18
+ def self.presents(name)
19
+ define_method(name) do
20
+ @object
21
+ end
22
+ end
23
+
24
+ # Accessor for template methods
25
+ def t
26
+ @template
27
+ end
28
+
29
+ # In the event a method called can't be found, default to the template methods
30
+ def method_missing(*args, &block)
31
+ @template.send(*args, &block)
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ # @author Lovell McIlwain
2
+ #
3
+ # Presenter class for object views
4
+ class <%= options[:name].camelize %>Presenter < BasePresenter
5
+ # Reference initialized object_presenter as object
6
+ presents :<%= options[:name]%>
7
+
8
+ # delegate :attribute, to: :object, allow_nil: true
9
+
10
+ # Return concatenated full name
11
+ def name
12
+ <%= options[:name]%>.attribute + " " + <%= options[:name]%>.attribute
13
+ end
14
+
15
+ # Return edit path
16
+ def edit_link
17
+ link_to :Edit, edit_<%= options[:name]%>_path(<%= options[:name]%>)
18
+ end
19
+ end
@@ -0,0 +1,4 @@
1
+ # Presenter tests requre this metho in order to fuction.
2
+ def include_behavior
3
+ include ActionView::TestCase::Behavior
4
+ end
@@ -0,0 +1,17 @@
1
+
2
+ require 'rails_helper'
3
+ #
4
+ describe <%= options[:name].camelize %>Presenter do
5
+ include_behavior
6
+
7
+ let(:presenter) {<%= options[:name].camelize %>Presenter.new(<%= options[:name] %>, view)}
8
+ let(:<%= options[:name] %>) {create :<%= options[:name] %>}
9
+
10
+ it 'returns name' do
11
+ expect(presenter.name).to eq object.attribute + " " + object.attribute
12
+ end
13
+
14
+ it 'returns edit path' do
15
+ expect(presenter.edit_link).to eq link_to :Edit, edit_<%= options[:name] %>_path(<%= options[:name] %>)
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ module ApplicationHelper
2
+ # Long date format
3
+ #
4
+ # @param date [Date] the date object
5
+ # @return day date month year - hour:minutes AM/PM
6
+ def long_date(date)
7
+ date.strftime("%A %d %B %Y - %H:%M %p") rescue 'unknown'
8
+ end
9
+
10
+ # Medium date format
11
+ #
12
+ # @param date [Date] the date object
13
+ # @return month/date/year at hour:minutes AM/PM
14
+ def medium_date(date)
15
+ date.strftime("%m/%d/%Y at %H:%M %p") rescue 'unknown'
16
+ end
17
+
18
+ # Another style of medium date format
19
+ #
20
+ # @param date [Date] the date object
21
+ # @return day/MONTH/YEAR
22
+ # Produces -> 18 October 2015
23
+ def medium_date2(date)
24
+ date.strftime("%d %B %Y") rescue 'unknown'
25
+ end
26
+
27
+ # Short date format
28
+ #
29
+ # @param date [Date] the date object
30
+ # @return year-month-date
31
+ def short_date(date)
32
+ date.strftime("%Y-%m-%d") rescue 'unknown'
33
+ end
34
+
35
+ # US date format
36
+ #
37
+ # @param date [Date] the date object
38
+ # @return year-month-date
39
+ def us_date(date)
40
+ date.strftime("%m/%d/%Y at %H:%M %p") rescue 'unknown'
41
+ end
42
+
43
+ def present(object, klass = nil)
44
+ klass ||= "#{object.class}Presenter".constantize
45
+ presenter = klass.new(object, self)
46
+ yield presenter if block_given?
47
+ presenter
48
+ end
49
+ end
@@ -0,0 +1,12 @@
1
+ class <%= options[:name].pluralize.camelize %>Controller < ApplicationController
2
+ # before_action :<%= options[:name].singularize %>, only: []
3
+ private
4
+
5
+ def <%= options[:name].singularize %>
6
+ @<%= options[:name] %> = Object.find(params[:id])
7
+ end
8
+
9
+ def <%= options[:name].singularize %>_params
10
+ params.require(:<%= options[:name] %>).permit()
11
+ end
12
+ end
@@ -0,0 +1,2 @@
1
+ class <%= options[:name].camelize %> < ActiveRecord::Base
2
+ end
@@ -0,0 +1,26 @@
1
+ # @author Lovell McIlwain
2
+ #
3
+ # Authorization for article objects
4
+ class <%= options[:name].camelize %>Policy < ApplicationPolicy
5
+ # Allow all users to access new article objects
6
+ def new?
7
+ true
8
+ end
9
+
10
+ # Allows owner of an article to edit the article
11
+ def edit?
12
+ user == record.user
13
+ end
14
+
15
+ # Allows all users to create article objects
16
+ alias_method :create?, :new?
17
+
18
+ # Allows all users to view article objects
19
+ alias_method :show?, :new?
20
+
21
+ # Allows owner of an article to update an article object
22
+ alias_method :update?, :edit?
23
+
24
+ # Allows owner of an object to remove an object
25
+ alias_method :destroy?, :edit?
26
+ end
@@ -0,0 +1,98 @@
1
+ require 'rails_helper'
2
+
3
+ # Does this controller require authentication?
4
+ describe <%= options[:name].camelize %>Controller do
5
+ # let(:user) {create :user}
6
+ let(:<%= options[:name].pluralize %>) {[]}
7
+ let(:<%= options[:name].singularize %>) {create :<%= options[:name].singularize %>}
8
+
9
+ # before {sign_in user}
10
+
11
+ describe 'GET index' do
12
+ before do
13
+ 3.times {<%= options[:name].pluralize %> << create(:<%= options[:name].singularize %>)}
14
+ get :index
15
+ end
16
+
17
+ it 'sets @<%= options[:name].pluralize %>' do
18
+ expect(assigns[:<%= options[:name].pluralize %>]).to eq <%= options[:name].pluralize %>
19
+ end
20
+ end
21
+
22
+ describe 'GET show' do
23
+ before {get :show, params: {id: <%= options[:name].singularize %>.id}}
24
+
25
+ it 'sets @<%= options[:name].singularize %>' do
26
+ expect(assigns[:<%= options[:name].singularize %>]).to eq <%= options[:name].singularize %>
27
+ end
28
+ end
29
+
30
+ describe 'GET new' do
31
+ before {get :new}
32
+
33
+ it 'sets @<%= options[:name].singularize %>' do
34
+ expect(assigns[:<%= options[:name].singularize %>]).to be_a_new <%= options[:name].singularize.camelize %>
35
+ end
36
+ end
37
+
38
+ describe 'POST create' do
39
+ context 'successful create' do
40
+ before {post :create, params: {<%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>)}}
41
+
42
+ subject(:<%= options[:name].first %>){assigns[:<%= options[:name].singularize %>]}
43
+
44
+ it 'redirects to :show'
45
+ it 'sets @<%= options[:name].singularize %>'
46
+ it 'sets flash[:success]'
47
+ it 'tags the current_user as creator'
48
+ end
49
+
50
+ context 'unsuccessful create' do
51
+ before {post :create, params: {<%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>, attr: nil)}}
52
+
53
+ it 'renders :new template'
54
+ it 'sets @<%= options[:name].singularize %>'
55
+ it 'sets flash[:error]'
56
+ end
57
+ end
58
+
59
+ describe 'GET edit' do
60
+ before {get :edit, params: {id: <%= options[:name].singularize %>.id}}
61
+
62
+ it 'sets @<%= options[:name].singularize %>' do
63
+ expect(assigns[:<%= options[:name].singularize %>]).to eq <%= options[:name].singularize %>
64
+ end
65
+ end
66
+
67
+ describe 'PUT/PATCH update' do
68
+ context 'successful update' do
69
+ before {put :update, params: {id: <%= options[:name].singularize %>.id, <%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>)}}
70
+
71
+ subject(:<%= options[:name].first %>) {assigns[:<%= options[:name].singularize %>]}
72
+
73
+ it 'redirects to :show'
74
+ it 'sets @<%= options[:name].singularize %>'
75
+ it 'sets flash[:success]'
76
+ it 'tags current_user as updater'
77
+ end
78
+
79
+ context 'unsuccessful update' do
80
+ before {put :update, params: {id: <%= options[:name].singularize %>.id, <%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>, attr: nil)}}
81
+
82
+ it 'renders :edit template'
83
+ it 'sets @<%= options[:name].singularize %>'
84
+ it 'sets flash[:error]'
85
+ end
86
+ end
87
+
88
+ describe 'DELETE destroy' do
89
+ before {delete :destroy, params: {id: <%= options[:name].singularize %>.id}}
90
+
91
+ it 'redirects to :index' do
92
+ expect(response).to redirect_to <%= options[:name].pluralize %>_path
93
+ end
94
+ it 'sets @<%= options[:name].singularize %>'
95
+ it 'deletes @<%= options[:name].singularize %>'
96
+ it 'sets flash[success]'
97
+ end
98
+ end
@@ -0,0 +1,18 @@
1
+ RSpec.configure do |config|
2
+ # => database cleaner configs
3
+ config.before(:suite) do
4
+ DatabaseCleaner.clean_with(:truncation)
5
+ end
6
+ config.before(:each) do
7
+ DatabaseCleaner.strategy = :transaction
8
+ end
9
+ config.before(:each, :js => true) do
10
+ DatabaseCleaner.strategy = :truncation
11
+ end
12
+ config.before(:each) do
13
+ DatabaseCleaner.start
14
+ end
15
+ config.after(:each) do
16
+ DatabaseCleaner.clean
17
+ end
18
+ end
@@ -0,0 +1,38 @@
1
+ RSpec.configure do |config|
2
+ config.include Devise::Test::ControllerHelpers, type: :controller
3
+ # config.include Devise::TestHelpers, type: :controller
4
+ config.include Devise::TestHelpers, type: :view
5
+ end
6
+
7
+ # Authenticate without going through the login process
8
+ RSpec.configure do |config|
9
+ config.include Warden::Test::Helpers
10
+ config.before :suite do
11
+ Warden.test_mode!
12
+ end
13
+ end
14
+
15
+ RSpec.configure do |config|
16
+ config.after :each do
17
+ Warden.test_reset!
18
+ end
19
+ end
20
+ #
21
+ =begin
22
+ Reference: https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
23
+
24
+ To use authentication bypass use the following for loging in:
25
+
26
+ user = FactoryGirl.create(:user)
27
+ login_as(user, :scope => :user)
28
+
29
+ if within a test you need to logout a user use:
30
+ logout(:user)
31
+ =end
32
+
33
+ def sign_in_with(user)
34
+ click_link 'Sign In'
35
+ fill_in 'user_email', with: user.email
36
+ fill_in 'user_password', with: 'somepassword'
37
+ click_button 'Log in'
38
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :<%= options[:name] %> do
3
+
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryGirl::Syntax::Methods
3
+ end
@@ -0,0 +1,3 @@
1
+ def delete_files
2
+ `rm -rf \#{Rails.root}/tmp/uploads`
3
+ end
@@ -0,0 +1,8 @@
1
+ module JavascriptHelper
2
+ # Basecamp trix uses hidden input to populate its editor
3
+ def fill_in_trix_editor(id, value)
4
+ find(:xpath, "//*[@id='#{id}']", visible: false).set(value)
5
+ end
6
+ end
7
+
8
+ # Example of use in feature test: fill_in_trix_editor("blog_comment_body_trix_input_blog_comment_#{blog_comment.id}", "some text")
@@ -0,0 +1,7 @@
1
+ def inbox
2
+ ActionMailer::Base.deliveries
3
+ end
4
+
5
+ def clear_inbox
6
+ ActionMailer::Base.deliveries.clear
7
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ describe <%= options[:name].camelize %> do
4
+
5
+ end
@@ -0,0 +1,28 @@
1
+ # Use with Pundit Matches: https://github.com/chrisalley/pundit-matchers
2
+ require 'rails_helper'
3
+ describe <%= options[:name].camelize %>Policy do
4
+ subject { <%= options[:name].camelize %>Policy.new(user, <%= options[:name] %>) }
5
+
6
+ let(:<%= options[:name] %>) { create :<%= options[:name] %> }
7
+
8
+ context 'for a visitor' do
9
+ it {is_expected.to permit_action(:new)}
10
+ it {is_expected.to permit_action(:create)}
11
+ it {is_expected.to permit_action(:show)}
12
+ it {is_expected.to forbid_action(:edit)}
13
+ it {is_expected.to forbid_action(:update)}
14
+ it {is_expected.to forbid_action(:destroy)}
15
+ end
16
+
17
+ context "for an admin" do
18
+
19
+ let(:user) { <%= options[:name] %>.user }
20
+
21
+ it {is_expected.to permit_action(:new)}
22
+ it {is_expected.to permit_action(:create)}
23
+ it {is_expected.to permit_action(:show)}
24
+ it {is_expected.to permit_action(:edit)}
25
+ it {is_expected.to permit_action(:update)}
26
+ it {is_expected.to permit_action(:destroy)}
27
+ end
28
+ end
@@ -0,0 +1,47 @@
1
+ RSpec::Matchers.define :permitted_to do |action|
2
+ match do |policy|
3
+ policy.public_send("#{action}?")
4
+ end
5
+
6
+ failure_message do |policy|
7
+ "#{policy.class} does not permit #{action} on #{policy.record} for #{policy.user.inspect}."
8
+ end
9
+
10
+ failure_message_when_negated do |policy|
11
+ "#{policy.class} does not forbid #{action} on #{policy.record} for #{policy.user.inspect}."
12
+ end
13
+ end
14
+
15
+ def pundit_error
16
+ Pundit::NotAuthorizedError
17
+ end
18
+
19
+ =begin
20
+
21
+ example: spec/policies/projects_policy_spec.rb
22
+
23
+ require 'rails_helper'
24
+
25
+ describe ProjectPolicy do
26
+ subject { ProjectPolicy.new(user, project) }
27
+ let(:project) { Fabricate :project }
28
+
29
+
30
+ context 'for a visitor' do
31
+ it { should_not permitted_to(:create) }
32
+ it { should_not permitted_to(:new) }
33
+ it { should_not permitted_to(:update) }
34
+ it { should_not permitted_to(:edit) }
35
+ end
36
+
37
+ context "for an admin" do
38
+ let(:user) { Fabricate(:user, admin: true) }
39
+
40
+ it { should permitted_to(:create) }
41
+ it { should permitted_to(:new) }
42
+ it { should permitted_to(:update) }
43
+ it { should permitted_to(:edit) }
44
+ end
45
+ end
46
+
47
+ =end
@@ -0,0 +1,7 @@
1
+ # Controller test doesn't seem to use default url option when redirecting to an associated record. Uses http://test.com. This is an attmept to unify this and capybara which uses http://www.example.com.
2
+ # Add this method to the before action of any controller specs that needed it. Found it useful to use this when using shared examples.
3
+ RSpec.configure do |config|
4
+ config.before(:each) do
5
+ @request.host = 'localhost:3000'
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ Shoulda::Matchers.configure do |config|
2
+ config.integrate do |with|
3
+ # Choose a test framework:
4
+ with.test_framework :rspec
5
+ # with.test_framework :minitest
6
+ # with.test_framework :minitest_4
7
+ # with.test_framework :test_unit
8
+
9
+ # Choose one or more libraries:
10
+ # with.library :active_record
11
+ # with.library :active_model
12
+ # with.library :action_controller
13
+ # Or, choose the following (which implies all of the above):
14
+ with.library :rails
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ # Supress stacktrace when specs fail
2
+ RSpec.configure do |config|
3
+ config.backtrace_exclusion_patterns = [/\/lib\d*\/ruby\//,
4
+ /org\/jruby\//,
5
+ /bin\//,
6
+ /gems\//,
7
+ /lib\/rspec\/(core|expectations|matchers|mocks)/]
8
+ end
@@ -0,0 +1,6 @@
1
+ %section.ui-index
2
+ %ul
3
+ - Dir.glob('app/views/ui/*.html.haml').sort.each do |file|
4
+ - wireframe = File.basename(file,'.html.haml')
5
+ - unless wireframe == 'index' || wireframe.match(/^_/)
6
+ %li= link_to wireframe.titleize, action: wireframe unless wireframe == 'index'
@@ -0,0 +1,8 @@
1
+ # @author Lovell McIlwain
2
+ # Handles HTTP actions for UI
3
+ class UiController < ApplicationController
4
+ # Before filter to check if application is running in development
5
+ before_action do
6
+ redirect_to :root if Rails.env.production?
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module Myrails
2
+ VERSION = "1.0.0"
3
+ end