Nyanko
_ ∧ ∧___
/(*゚ー゚) /\ Nyanko is a Rails extension framework,
/| ̄ ∪∪  ̄|\/ which is deeply inspired from Chanko
| |/ and has same API and clean implementation as Chanko.
 ̄ ̄ ̄ ̄ ̄ https://github.com/cookpad/chanko
Requirements
- Ruby >= 1.8.7
- Rails >= 3.0.10
Install
$ gem install nyanko
Usage
Gemfile
# Gemfile
gem "nyanko"
Invoke
class EntriesController < ApplicationController
unit_action :entry_deletion, :destroy
def index
invoke(:entry_deletion, :index) do
@entries = Entry.all
end
end
end
Unit
# app/units/entry_deletion/entry_deletion.rb
module EntryDeletion
include Nyanko::Unit
active_if { Rails.env.development? }
scope(:view) do
function(:delete_link) do
render "/delete_link", :entry => entry if entry.persisted?
end
end
scope(:controller) do
function(:destroy) do
entry = Entry.find(params[:id])
entry.unit.soft_delete
redirect_to entries_path
end
function(:index) do
@entries = Entry.unit.active
end
end
models do
(:Entry) do
scope :active, lambda { where(:deleted_at => nil) }
def soft_delete
update_attributes(:deleted_at => Time.now)
end
end
end
helpers do
def link_to_deletion(entry)
link_to "Delete", entry, :method => :delete
end
end
end
-# app/units/entry_deletion/views/_delete_link.html.slim
= unit.link_to_deletion(entry)
Example App
There is an example rails application for Nyanko in spec/dummy directory.
$ git clone [email protected]:r7kamura/nyanko.git
$ cd nyanko/spec/dummy
$ rails s
Todo
- Test macros
- Generator
- Documentation
- Backward compatibility