🎩 Bourgeois is a Ruby library that makes using presenters a very simple thing.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
gemfiles
lib
spec
.gitignore
.rspec
.rubocop.yml
.travis.yml
Gemfile
LICENSE.md
README.md
Rakefile
bourgeois.gemspec

README.md

Bourgeois
Bourgeois is a Ruby library that makes using presenters a very simple thing.


Installation

Add this line to your application’s Gemfile:

gem 'bourgeois'

And then execute:

$ bundle

Usage

Create an app/presenters directory and put some presenters in it:

# app/presenters/user_presenter.rb

class UserPresenter < Bourgeois::Presenter
  def formatted_name
    "#{first_name} #{last_name}".strip
  end
end

Then, you can use the present helper in your views to wrap ActiveModel (and ActiveRecord) objects around a presenter:

<% present User.first do |user| %>
  <p>This is <%= user.formatted_name %></p>
<% end %>

Methods that aren’t in the presenter (first_name and last_name) are delegated to the presented object. You can also use the view method in the presenter to get the original view it was called in:

# app/presenters/user_presenter.rb

class UserPresenter < Bourgeois::Presenter
  def birthdate
    # To get the original `birthdate` value, you can either use `super` or `object.birthdate`
    super.presence || view.content_tag(:em, 'Unknown')
  end
end

Custom block helpers

You can use the simple helper DSL to define block helpers that will be executed if certain conditions are matched.

class UserPresenter < Bourgeois::Presenter
  helper :with_profile, if: -> { profile.present? && profile.public? }
end

User.first.profile = Profile.create(public: true, title: 'Foo', description: 'Bar')
<% present User.first do |user| %>
  <h1><%= user.full_name %></h1>
  <% user.with_profile do %>
    <div class="profile">
      <h2><%= user.profile.title %></h2>
      <%= simple_format(user.profile.description) %>
    </div>
  <% end %>
<% end %>

Inspiration

Bourgeois was inspired by some code @rafBM wrote for his OpenCode talk on May 28th, 2013.

License

Bourgeois is © 2013-2015 Mirego and may be freely distributed under the New BSD license. See the LICENSE.md file.

About Mirego

Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. We're a team of talented people who imagine and build beautiful Web and mobile applications. We come together to share ideas and change the world.

We also love open-source software and we try to give back to the community as much as we can.