- Maintenance release.
- Cells runs with Rails 4.
cell/base
can now be required without trouble.- Generated test files now respect namespaced cells.
- Added
Cell::Rails::HelperAPI
module to provide the entire Rails view “API” (quotes on purpose!) in cells running completely outside of Rails. This makes it possible to use gems like simple_form in any Ruby environment, especially interesting for people using Sinatra, webmachine, etc. - Moved
Caching.expire_cache_key
toRails
. UseCaching.expire_cache_key_for(key, cache_store, ..)
if you want to expire caches outside of Rails.
- Added
Cell::Rack
for request-dependent Cells. This is also the new base class forCells::Rails
. - Removed deprecation warning from
TestCase#cell
as it’s signature is not deprecated. - Added the
base_cell_class
config option to generator for specifying an alternative base class.
- Added
Engines.existent_directories_for
to prevent Rails 3.0 from crashing when it detects engines.
- Engines should work in Rails 3.0 now, too.
- Make it work with Rails 3.2 by removing deprecated stuff.
Cell::Base
got rid of the controller dependency. If you want theActionController
instance around in your cell, useCell::Rails
– this should be the default in a standard Rails setup. However, if you plan on using a Cell in a Rack middleware or don’t need the controller, useCell::Base
.- New API (note that
controller
isn’t the first argument anymore):Rails.create_cell_for(name, controller)
Rails.render_cell_for(name, state, controller, *args)
- Moved builder methods to
Cell::Builder
module. DEFAULT_VIEW_PATHS
is now inCell::Base
.- Removed the monkey-patch that made state-args work in Rails <= 3.0.3. Upgrade to +3.0.4.
- Works with Rails 3.2, too. Hopefully.
- Cache settings using
Base.cache
are now inherited. - Removed
@opts
. - Removed
#options
in favor of state-args. If you still want the old behaviour, include theDeprecations
module in your cell. - The build process is now instantly delegated to Base.build_for on the concrete cell class.
- Removed
@opts
. - Deprecated
#options
in favour of state-args.
- Added
view_assigns
to TestCase.
- Added the
:format
option for#render
which should be used with caution. Sorry for that. - Removed the useless
layouts/
view path from Cell::Base.
- `Cell::TestCase#invoke` now properly accepts state-args.
- Added the `:if` option to `Base.cache` which allows adding a conditional proc or instance method to the cache definition. If it doesn’t return true, caching for that state is skipped.
- Fixes
ArgumentError: wrong number of arguments (1 for 0)
in#render_cell
for Ruby 1.8.
- [Rails 3.0] Helpers are now properly included (only once). Thanks to [paneq] for a fix.
- `#url_options` in the Metal module is now delegated to `parent_controller` which propagates global URL setting like relative URLs to your cells.
- `cells/test_case` is no longer required as it should be loaded automatically.
- Fixed cells.gemspec to allow Rails 3.×.
- Added the
:format
option allowing#render
to set different template types, e.g.render :format => :json
.
- Cells runs with Rails 3.0 and 3.1.
- Added a generator for slim. Use it with `-e slim` when generating.
- The generator now places views of namespaced cells into the correct directory. E.g. `rails g Blog::Post display` puts views to `app/cells/blog/post/display.html.erb`.
- Gem dependencies changed, we now require
actionpack
andrailties
>= 3.0.0 instead ofrails
.
- state-args work even if your state method receives optional arguments or default values, like
def show(user, age=18)
.
- Cell::Base.view_paths is now setup in an initializer. If you do scary stuff with view_paths this might lead to scary problems.
- Cells::DEFAULT_VIEW_PATHS is now Cell::Base::DEFAULT_VIEW_PATHS. Note that Cells will set its view_paths to DEFAULT_VIEW_PATHS at initialization time. If you want to alter the view_paths, use Base.append_view_path and friends in a separate initializer.
- Controller#render_cell now accepts multiple args as options.
- Caching versioners now can accept state-args or options from the #render_cell call. This way, you don’t have to access #options at all anymore.
- No longer pass an explicit Proc but a versioner block to
Cell.Base.cache
. Example:cache :show do "v1" end
- Caching.cache_key_for now uses
ActiveSupport::Cache.expand_cache_key
. Consequently, a key which used to be like"cells/director/count/a=1/b=2"
now iscells/director/count/a=1&b=2
and so on. Be warned that this might break your home-made cache expiry. - Controller#expire_cell_state now expects the cell class as first arg. Example:
expire_cell_state(DirectorCell, :count)
- Passing options to
render :state
in views finally works:render({:state => :list_item}, item, i)
- Deprecated @opts, use #options now.
- Added state-args. State methods can now receive the options as method arguments. This should be the prefered way of parameter exchange with the outer world.
- #params, #request, and #config is now delegated to @parent_controller.
- The generator now is invoked as
rails g cell ...
- The `—haml` option is no longer available.
- The `-t` option now is compatible with the rest of rails generators, now it is used as alias for `—test-framework`. Use the `-e` option as an alias of `—template-engine`
Thanks to Jorge Calás Lozano <calas@qvitta.net> for patching this in the most reasonable manner i could imagine. - Privatized
#find_family_view_for_state
,#render_view_for
, and all *ize methods in Cell::Rails. - New signature:
#render_view_for(state, *args)
- Cells.setup now yields Cell::Base, so you can really call append_view_path and friends here.
- added Cell::Base.build for streamlining the process of deciders around #render_cell, see here
- added TestCase#in_view to test helpers in a real cell view.
- #render_cell now accepts a block which yields the cell instance before rendering.
- We no longer use TestTaskWithoutDescription in our rake tasks.