Refinery CMS Members
Simple member engine for Refinery CMS. It supports member management and page privilege setting.
This version of refinerycms-members
supports Rails 3.2.x, RefineryCMS 2.0 and above.
Install
Open up your Gemfile
and add:
gem 'refinerycms-members2'
Run bundle install
Next, to install the members plugin run:
rails generate refinery:members
Note that the above task copies *.refinery_members.rb
migration files to your db/migrate
directory.
You should examine *_create_members.refinery_members.rb
file and adjust it (if necessary)
to enable or disable Devise strategies and options that are appropriate for your flavor of members.
WARNING: Rails 3 has a bug (fixed in Rails 4) which causes
rake railties:install:migrations
to copy engine migration files without a particular order. Sincerefinerycms-members2
depends on the database table generated byrefinerycms-pages
, the migrations may be copied in a wrong order and thus will not run. Either start your project withoutrefinerycms-members2
and add this gem later, or rename*.refinery_members.rb
migrations to follow*_create_pages.refinery_pages.rb
migration before runningrake db:migrate
for the first time.
Finally migrate your database and you're done.
rake db:migrate
Secrets and Easter Eggs
You might have noticed that a second migration adds "need_login" boolean field to the Refinery CMS pages.
Setting this flag will require all visitors of that page to have a member account.
Otherwise, 404 error page is returned. This filtering is handled in lib/refinery/members/instance_methods.rb
.
You may want to check with that implementation should you decide to override it.
The gotcha is: this flag is not accessible out-of-the-box, you will need to edit/override your page editing
template(s) and add it yourself.
Another gotcha is: "need_login" flag does not work for the root page of CMS (which is handled by a dedicated "home" action in Refinery::PagesController). The idea is to give a chance to an unsuspecting visitor to understand what this site is about by providing at least a root page with some info, instead of instantly redirecting them to the login page. If you don't want it, override it.
Testing
This section is intended for developers of refinerycms-members2. You may skip it if you just use the gem.
Refinery-members2 uses refinery-testing gem for testing.
Follow the guidelines at http://refinerycms.com/guides/testing to setup the dummy app.
However, I couldn't get rake spec
to work as easily as suggested at the guidelines.
If (after completing all previous steps) you find that rake spec
does not work for you,
here's what you can do:
cd spec/dummy
rails g refinery:testing
At this step you should have Guardfile
in spec/dummy
and spec_helper.rb
in spec/dummy/spec
.
rake db:test:prepare
Now we're done with the final steps of setting up the dummy app.
You can go back from spec/dummy
to the root directory of your engine:
cd ../..
Place your specs in spec
directory, as usual. Run the tests as follows:
rake spec
Apparently, one can add the finalizing steps in your Rakefile
, by creating
refinery:testing:setup_extension
task as suggested in lib/refinery/tasks/testing.rake
file
of refinery-testing
gem.
How to build this engine as a gem
gem build refinerycms-members2.gemspec
gem install refinerycms-members2.gem
# Sign up for a http://rubygems.org/ account and publish the gem
gem push refinerycms-members2.gem