[github]: https://github.com/neopoly/neo-rails [doc]: http://rubydoc.info/github/neopoly/neo-rails/master/file/README.md [gem]: https://rubygems.org/gems/neo-rails [travis]: https://travis-ci.org/neopoly/neo-rails [codeclimate]: https://codeclimate.com/github/neopoly/neo-rails [inchpages]: https://inch-ci.org/github/neopoly/neo-rails # Neo::Rails `neo-rails` contains some tools helping us doing Rails. [][travis] [][gem] [][codeclimate] [][codeclimate] [][inchpages] [Gem][gem] | [Source][github] | [Documentation][doc] This gem includes: * Mocks * Presenters * View Models * Exposure * Scenarios ## Installation Add this line to your application's Gemfile: gem 'neo-rails', '~> 0.4.1' And then execute: $ bundle Or install it yourself as: $ gem install neo-rails You can generate base classes for your presenters, mocks and view models with $ rake neo-rails:setup ## Usage ### Generators Create files and tests... Example 'User': ```ruby rails g presenter User ``` ```ruby rails g mock User ``` ```ruby rails g view_model UserProfile ``` ### Presenter In app/presenters/presenter.rb ```ruby class Presenter include Neo::Rails::Presenter end class UserPresenter < Presenter def initialize(user) @user = user end def name @user.name end def profile_path view_context.link_to view_context.user_profile_path(@user), name end end ``` In test/test_helper.rb ```ruby require 'neo/rails/presenter/test_helper' Neo::Rails::Presenter::TestHelper.setup ``` ### Exposures In app/controllers/pages_controller.rb ```ruby class PagesController < ApplicationController include Neo::Rails::Exposure exposes :title, :description def faq expose :title, "A title" expose :description, "A description" end end ``` In app/views/pages/faq.html.erb ```erb <div class="title"> <%= title %> </div> <div class="description"> <%= description %> </div> ``` ### Scenarios In app/assets/stylesheets/application.css: /*= require neo-rails */ In app/assets/javascript/application.js //= require neo-rails In app/layouts/application.html.erb <%= render_scenarios_list %> ### Testing rm -f Gemfile.lock export RAILS_VERSION=3.2 # or 4.0 bundle bundle exec rake ## TODO * Test scenarios! ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Added some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request ## Release Follow these steps to release this gem: # Bump version in edit lib/neo/rails/version.rb edit README.md git commit -m "Release X.Y.Z" rake release