# MyRails A library for generating rails related templates and configuring some standard gems (that I use) a lot easier. This was designed with Rails 5 in mind but most of it "should" work with rails 4. An example of the design differences is, a generated model inherit from `ApplicatinoRecord` instead of `ActiveRecord::Base` This library is not endorsed by the Rails core team. I wrote it as a convenience for generating code that I would otherwise have written by hand or would have had to manage with code snippets (I use more than one editor) ## Disclaimer `Use at your own risk!` I am not responsible for any issues that come from using this library. If you are not sure it will work for you, install it on a vagrant vm and give it a try there. You can even use the Vagrantfile that is in this repo to take care of configuring a useable vm. This does not work with the windows environment ## Notes Use v1.1.1 if you are primarily developing in rails 3 & 4 Use the latest version if you are primarily developing in rails 5 ## Requirements Ruby 2.2 and above ## Examples A gem I use often is pundit. With this library I can generate a policy along with an RSpec pundit matcher file to test the policy with. I am able to run the following: ```ruby myrails kickstart policy article ``` which outputs something like: ``` create app/policies/article_policy.rb create spec/policies/article_policy_spec.rb ``` with corresponding files: ``` . ├── app │ └── policies │ └── article_policy.rb └── spec └── policies └── article_policy_spec.rb ``` Inside app/policies/articles_policy.rb is boiler plate code (something like): ```ruby class ArticlePolicy < ApplicationPolicy def new? true end def edit? user == record.user end alias_method :create?, :new? alias_method :show?, :new? alias_method :update?, :edit? alias_method :destroy?, :edit? end ``` Inside the spec/policies/articles_policy_spec.rb is boiler plate code (something like): ```ruby require 'rails_helper' describe ArticlePolicy do subject { ArticlePolicy.new(user, article) } let(:article) { create :article } context 'for a visitor' do it {is_expected.to permit_action(:new)} it {is_expected.to permit_action(:create)} it {is_expected.to permit_action(:show)} it {is_expected.to forbid_action(:edit)} it {is_expected.to forbid_action(:update)} it {is_expected.to forbid_action(:destroy)} end context "for an admin" do let(:user) { article.user } it {is_expected.to permit_action(:new)} it {is_expected.to permit_action(:create)} it {is_expected.to permit_action(:show)} it {is_expected.to permit_action(:edit)} it {is_expected.to permit_action(:update)} it {is_expected.to permit_action(:destroy)} end end ``` ## Installation In the terminal: ### For use with Rails 3 & 4 ```ruby gem install myrails -v 1.1.1 ``` ### For use with Rails 5 ```ruby gem install myrails ``` ## Usage Simply type `myrails` to see the help menu The current options available are: * db - Rails database options * engine (aliase e) - Rails engine options * install (aliase i) - Rails gems and configuration options * kickstart (aliase ks) - Rails template generation options * spec (aliase s) - RSpec template generation options * setup_sendgrid - Install sendgrid initializer with mail interceptor Every option also has a help menu. For instance, specifying `myrails kickstart` will display something like: ```ruby ERROR: "myrails kickstart" was called with no arguments Usage: "myrails kickstart