Alchemy CMS Spree Extension

The World's Most Flexible E-Commerce Platform meets The World's Most Flexible Content Management System!

This gem is a Alchemy CMS and Spree connector.

For now it does this:

  1. It provides an Alchemy module that displays Spree admin in an iframe inside Alchemy admin.
  2. It gives you new Essences for Alchemy called EssenceSpreeProduct and EssenceSpreeTaxon that you can use to place a Spree product and Taxon on your pages.
  3. Shares admin session between Alchemy and Spree.



This version runs with Spreecommerce 2.1 and above.


This version runs with Alchemy 3.0


Add this line to your application's Gemfile:

gem 'alchemy_spree', github: 'magiclabs/alchemy_spree', branch: 'master'

And then execute:

$ bundle

Install the migrations:

$ rake alchemy_spree:install:migrations

Migrate the database:

$ rake db:migrate

Authentication system installation

Since Alchemy 3.0 has dropped the authentication from its core, you will need to choose one authentication system. The easiest choice is to use the alchemy-devise gem.

To install alchemy-devise:

# Gemfile
gem 'alchemy-devise', '~> 2.0'

And then execute:

$ bundle

Finally, you'll need to instruct Spree accordingly:

# config/initializers/spree.rb
Spree.user_class = "Alchemy::User"


Create a new Element for Alchemy

# config/alchemy/elements.yml
- name: product
  - name: spree_product
    type: EssenceSpreeProduct

- name: product_category
  - name: spree_taxon
    type: EssenceSpreeTaxon

Generate the views

$ rails g alchemy:elements --skip

Place this element on a page layout

# config/alchemy/page_layouts.yml
- name: product
  elements: [product]
- name: products
  elements: [product_category]

You can haz Spree product and taxons!

# app/views/alchemy/elements/_product_view.html.erb
<%= element.ingredient('spree_product') %>

# app/views/alchemy/elements/_product_category_view.html.erb
<%= element.ingredient('spree_taxon') %>

Alchemy :heart: Spree!


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request