aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md22
-rw-r--r--app/controllers/inboxes/base_controller.rb4
-rw-r--r--app/controllers/inboxes/discussions_controller.rb5
-rw-r--r--app/controllers/inboxes/messages_controller.rb9
-rw-r--r--app/controllers/inboxes/speakers_controller.rb2
-rw-r--r--app/helpers/inboxes_helper.rb3
-rw-r--r--app/models/discussion.rb2
-rw-r--r--app/models/inboxes/ability.rb38
-rw-r--r--lib/inboxes.rb2
-rw-r--r--lib/inboxes/ability.rb29
-rw-r--r--lib/inboxes/engine.rb7
-rw-r--r--lib/inboxes/railtie.rb1
-rw-r--r--lib/inboxes/version.rb2
-rw-r--r--log/development.log0
14 files changed, 20 insertions, 106 deletions
diff --git a/README.md b/README.md
index 1e0ccd9..d6052a8 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,7 @@ Inboxes is a young messaging system for Rails app. It:
- provides 3 models for developers: Discussion, Message and Speaker
- read/unread discussions counter
- any user can be invited to discussion by the member of this discussion, so you can chat with unlimited number of users
+- have configurable behavior via CanCan Ability
##Upgrading from 0.1 to current version (0.2)
@@ -13,7 +14,6 @@ Inboxes is a young messaging system for Rails app. It:
##Requirements and recommendations
Inboxes requires Rails 3.x and [Devise](https://github.com/plataformatec/devise) for user identification (surely, messaging system is not possible without users). Now the gem is tested only with Ruby 1.8.7 and REE.
-
We recommend to use Inboxes with [Faye](https://github.com/jcoglan/faye), because it's really sexy with it.
Remember that unfortunately, Inboxes reserve 3 resources names: Discussion, Message and Speaker.
@@ -22,12 +22,21 @@ Since version 0.2.0, it is possible to add `has_inboxes` option to any model. Fo
##Installation
-*Make sure that Devise is already installed and configured in your app!*
+*Make sure that [Devise](https://github.com/plataformatec/devise) and [CanCan](https://github.com/ryanb/cancan) are already installed and configured in your app!*
1. Add `gem "inboxes", "~> 0.2.0"` to the `Gemfile` and run `bundle install`
2. Execute `rails generate inboxes:install`. This command will generate migration for messaging system. Don't forget to run migrations: `rake db:migrate`
3. Add `has_inboxes` to your User model like [here](https://gist.github.com/1330080).
-4. Now Inboxes are ready to use. Open `http://yoursite.dev/discussions` to see the list of discussions. You can start new one.
+4. Add CanCan abilities to manage Inboxes models:
+
+```ruby
+can [:index, :create], Discussion
+can :read, Discussion do |discussion|
+ discussion.can_participate?(user)
+end
+```
+
+5. Now Inboxes are ready to use. Open `http://yoursite.dev/discussions` to see the list of discussions. You can start new one.
Default Inboxes views are ugly, so you can copy into your app and make anything with them: `rails generate inboxes:views`
If you have problems with installation, you can check [code of demo app](https://github.com/kirs/inboxes-app)
@@ -55,8 +64,8 @@ config.inboxes.faye_port = 9292 # 9292 by default
5. Faye installation is finished. If you have any troubles, check the [example app](https://github.com/kirs/inboxes-app/)
-*While testing Inboxes with Faye, don't forget to run it: `rackup faye.ru -s thin -E production`*
-You can read more about Faye on it's [official page](http://faye.jcoglan.com/).
+*While running Inboxes with Faye, don't forget to run Faye worker it: `rackup faye.ru -s thin -E production`*
+You can read more about that on it's [official page](http://faye.jcoglan.com/).
### Hints
@@ -64,8 +73,7 @@ You can read more about Faye on it's [official page](http://faye.jcoglan.com/).
##Todo
-- Add RSpec tests
-- Add ability to inherit Inboxes controllers
+- Finalize RSpec tests (are located in [rspec branch](https://github.com/evrone/inboxes/tree/rspec))
- Add Pusher capability
- Email notifications and the ability to answer received emails like in Github issues (#7)
diff --git a/app/controllers/inboxes/base_controller.rb b/app/controllers/inboxes/base_controller.rb
index 3e3f8dc..fa14bec 100644
--- a/app/controllers/inboxes/base_controller.rb
+++ b/app/controllers/inboxes/base_controller.rb
@@ -4,8 +4,4 @@ class Inboxes::BaseController < ApplicationController
def init_discussion
@discussion = Discussion.find(params[:discussion_id])
end
-
- def current_ability
- @current_ability ||= Inboxes::Ability.new(current_user)
- end
end \ No newline at end of file
diff --git a/app/controllers/inboxes/discussions_controller.rb b/app/controllers/inboxes/discussions_controller.rb
index 52655e2..8074274 100644
--- a/app/controllers/inboxes/discussions_controller.rb
+++ b/app/controllers/inboxes/discussions_controller.rb
@@ -7,14 +7,13 @@ class Inboxes::DiscussionsController < Inboxes::BaseController
end
def show
- # @discussion = Discussion.includes(:messages, :speakers).find(params[:id])
@discussion.mark_as_read_for(current_user)
end
def new
@discussion.messages.build
end
-
+
def create
@discussion.add_recipient_token current_user.id
@@ -45,7 +44,7 @@ class Inboxes::DiscussionsController < Inboxes::BaseController
@discussion.messages.each do |message|
Message.create(:discussion => discussion, :user => current_user, :body => message.body) if message.body
end
- # redirecting to this discussion page
+ # redirecting to that existing object
redirect_to discussion_url(discussion), :notice => t("inboxes.discussions.already_exists", :user => user[Inboxes::config.user_name])
end
end
diff --git a/app/controllers/inboxes/messages_controller.rb b/app/controllers/inboxes/messages_controller.rb
index 697592a..9962c63 100644
--- a/app/controllers/inboxes/messages_controller.rb
+++ b/app/controllers/inboxes/messages_controller.rb
@@ -1,6 +1,4 @@
class Inboxes::MessagesController < Inboxes::BaseController
- # before_filter :init_discussion
- # load_and_authorize_resource
load_and_authorize_resource :discussion
load_resource :message, :through => :discussion, :shallow => true
@@ -14,11 +12,4 @@ class Inboxes::MessagesController < Inboxes::BaseController
format.js
end
end
-
- # private
- #
- # def init_and_check_permissions
- # @discussion = Discussion.find(params[:discussion_id])
- # redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
- # end
end
diff --git a/app/controllers/inboxes/speakers_controller.rb b/app/controllers/inboxes/speakers_controller.rb
index 30c0b7f..ab79f70 100644
--- a/app/controllers/inboxes/speakers_controller.rb
+++ b/app/controllers/inboxes/speakers_controller.rb
@@ -1,8 +1,6 @@
class Inboxes::SpeakersController < Inboxes::BaseController
- # before_filter :init_discussion
load_and_authorize_resource :discussion
load_resource :speaker, :through => :discussion, :shallow => true
- # load_and_authorize_resource
def create
raise ActiveRecord::RecordNotFound unless params[:speaker] && params[:speaker][:user_id]
diff --git a/app/helpers/inboxes_helper.rb b/app/helpers/inboxes_helper.rb
index 87bb763..b5fc455 100644
--- a/app/helpers/inboxes_helper.rb
+++ b/app/helpers/inboxes_helper.rb
@@ -3,7 +3,6 @@ module InboxesHelper
def inboxes_faye_broadcast(channel, &block)
message = {:channel => channel, :data => capture(&block), :ext => {:auth_token => defined?(FAYE_TOKEN) ? FAYE_TOKEN : ""}}
uri = URI.parse("http://#{Inboxes::config.faye_host}:#{Inboxes::config.faye_port}/faye")
- # Rails.logger.info "Faye URL: #{uri}"
- res = Net::HTTP.post_form(uri, :message => message.to_json)
+ resource = Net::HTTP.post_form(uri, :message => message.to_json)
end
end \ No newline at end of file
diff --git a/app/models/discussion.rb b/app/models/discussion.rb
index 675547d..6df0b1d 100644
--- a/app/models/discussion.rb
+++ b/app/models/discussion.rb
@@ -2,8 +2,6 @@ class Discussion < ActiveRecord::Base
attr_accessor :recipient_tokens, :recipient_ids
attr_reader :recipient_ids
- # paginates_per 10
-
# creater
has_many :messages, :dependent => :destroy
diff --git a/app/models/inboxes/ability.rb b/app/models/inboxes/ability.rb
deleted file mode 100644
index deb3d81..0000000
--- a/app/models/inboxes/ability.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# Implementation class for Cancan gem. Instead of overriding this class, consider adding new permissions
-# using the special +register_ability+ method which allows extensions to add their own abilities.
-#
-# See http://github.com/ryanb/cancan for more details on cancan.
-module Inboxes
- class Ability
- include CanCan::Ability
-
- class_attribute :abilities
- self.abilities = Set.new
-
- # Allows us to go beyond the standard cancan initialize method which makes it difficult for engines to
- # modify the default +Ability+ of an application. The +ability+ argument must be a class that includes
- # the +CanCan::Ability+ module. The registered ability should behave properly as a stand-alone class
- # and therefore should be easy to test in isolation.
- def self.register_ability(ability)
- self.abilities.add(ability)
-
- end
-
- def initialize(user)
- # raise "Initializing 3rd patry"
- # self.clear_aliased_actions
-
- # can [:index, :create], Discussion
- # can :read, Discussion do |discussion|
- # discussion.can_participate?(user)
- # end
-
- #include any abilities registered by extensions, etc.
-
- Ability.abilities.each do |clazz|
- ability = clazz.send(:new, user)
- @rules = rules + ability.send(:rules)
- end
- end
- end
-end
diff --git a/lib/inboxes.rb b/lib/inboxes.rb
index af88b0c..4e7650d 100644
--- a/lib/inboxes.rb
+++ b/lib/inboxes.rb
@@ -1,6 +1,6 @@
+require "cancan"
require "inboxes/version"
require "inboxes/railtie"
-require "inboxes/ability"
require "inboxes/engine"
require "inboxes/active_record_extension"
require "cancan"
diff --git a/lib/inboxes/ability.rb b/lib/inboxes/ability.rb
deleted file mode 100644
index c9f8d6b..0000000
--- a/lib/inboxes/ability.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require "cancan"
-
-module Inboxes
- class InboxesAbility
- include ::CanCan::Ability
-
- def initialize(user)
- # Discussion
- # raise "Registered!"
- if user
- can [:index, :create], Discussion
- can :read, Discussion do |discussion|
- discussion.can_participate?(user)
- end
- end
-
- # Message
- # can :create, Message do |message|
- # message.discussion.can_participate?(user)
- # end
- #
- # # Speaker
- # can [:create, :destroy], Speaker do |speaker|
- # speaker.discussion.can_participate?(user)
- # end
- end
- end
-
-end \ No newline at end of file
diff --git a/lib/inboxes/engine.rb b/lib/inboxes/engine.rb
index b61eebc..061694e 100644
--- a/lib/inboxes/engine.rb
+++ b/lib/inboxes/engine.rb
@@ -1,11 +1,4 @@
-require "inboxes/ability"
-
module Inboxes
class Engine < ::Rails::Engine
- def self.activate
- Ability.register_ability(InboxesAbility)
- end
-
- config.to_prepare &method(:activate).to_proc
end
end \ No newline at end of file
diff --git a/lib/inboxes/railtie.rb b/lib/inboxes/railtie.rb
index 1626b20..f99cd06 100644
--- a/lib/inboxes/railtie.rb
+++ b/lib/inboxes/railtie.rb
@@ -1,5 +1,4 @@
require 'rails'
-require "inboxes/ability"
module Inboxes
class Railtie < ::Rails::Railtie
diff --git a/lib/inboxes/version.rb b/lib/inboxes/version.rb
index ee23565..c4b3908 100644
--- a/lib/inboxes/version.rb
+++ b/lib/inboxes/version.rb
@@ -1,3 +1,3 @@
module Inboxes
- VERSION = "0.2.0"
+ VERSION = "0.2.1"
end
diff --git a/log/development.log b/log/development.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/log/development.log