Solidus, Rails eCommerce System
Branch: master
Clone or download
kennyadsl Merge pull request #3104 from benjaminwil/user_guides/product_propert…

Move misplaced end-user documentation
Latest commit 0520d8b Feb 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Move build-ci.rb to bin/build-ci Nov 23, 2018
.github Merge pull request #3058 from nebulab/kennyadsl/improve-pr-templates Feb 6, 2019
api Using current_pricing_options to find prices in API Feb 4, 2019
backend Merge pull request #3083 from coorasse/fix_locale_setting Feb 13, 2019
bin Move build-ci.rb to bin/build-ci Nov 23, 2018
core Merge pull request #3080 from nebulab/kennyadsl/cleanup-core-tasks Feb 13, 2019
frontend Merge pull request #2928 from geminimvp/first_order_promo_prereq Jan 31, 2019
guides Move misplaced /users/products documentation Feb 15, 2019
lib fix sed call so it works on mac Feb 8, 2019
sample Use bash for syntax highlighting instead of shell Oct 3, 2018
.editorconfig Adds editorConfig. Oct 24, 2014
.gem_release.yml Add gem-release gem and its config file Jan 30, 2019
.gitignore Move to bin/build Nov 23, 2018
.hound.yml Lint ERB files with HoundCI Dec 14, 2018
.rubocop.yml Disable some rubocop rules Mar 8, 2018
.yardopts Move yard opts file into root folder Jan 3, 2019 Master now tracks 2.9.0 Jan 29, 2019 Add criteria for merging a PR Dec 1, 2018
Gemfile Lock sqlite3 version to 1.3 Feb 7, 2019 Capitalize Jun 12, 2015 Updating readme to include OpenCollective information Jan 31, 2019
Rakefile Explicitly require Bundler within Rakefile Jan 4, 2019
app.json fix reference to logo on heroku template Oct 11, 2018
logo.svg Copy logo from guides Oct 3, 2018
solidus.gemspec Rubocop auto Mar 8, 2018

Table of Contents

  1. Key Stakeholders
  2. Summary
  3. Demo
  4. Getting Started
  5. Installation Options
  6. Performance
  7. Developing Solidus
  8. Contributing

Key Stakeholders

Thank you to all our donors! 🙏 Become a donor

Support this project by becoming a Key Stakeholder. Your logo will show up here with a link to your website. Become a Key Stakeholder


Solidus is a complete open source ecommerce solution built with Ruby on Rails. It is a fork of Spree.

See the Solidus class documentation and the Solidus Guides for information about the functionality that Solidus provides.

Solidus consists of several gems. When you require the solidus gem in your Gemfile, Bundler will install all of the gems maintained in this repository:

All of the gems are designed to work together to provide a fully functional ecommerce platform. However, you may only want to use the solidus_core gem combine it with your own custom frontend, admin interface, and API.

Circle CI Gem License Slack Backers on Open Collective Sponsors on Open Collective

Supported by

Reviewed by Hound


Try out Solidus with one-click on Heroku:


Getting started

Begin by making sure you have Imagemagick installed, which is required for Paperclip. (You can install it using Homebrew if you're on a Mac.)

To add solidus, begin with a Rails 5 application and a database configured and created. Add the following to your Gemfile.

gem 'solidus'
gem 'solidus_auth_devise'

Run the bundle command to install.

After installing gems, you'll have to run the generators to create necessary configuration files and migrations.

bundle exec rails g spree:install
bundle exec rails g solidus:auth:install
bundle exec rake railties:install:migrations

Run migrations to create the new models in the database.

bundle exec rake db:migrate

Finally start the rails server

bundle exec rails s

The solidus_frontend storefront will be accessible at http://localhost:3000/ and the admin can be found at http://localhost:3000/admin/.

Default Username/Password

As part of running the above installation steps, you will be asked to set an admin email/password combination. The default values are and test123, respectively.


The best way to ask questions is via the #support channel on the Solidus Slack.

Installation options

Instead of a stable build, if you want to use the bleeding edge version of Solidus, use this line:

gem 'solidus', github: 'solidusio/solidus'

Note: The master branch is not guaranteed to ever be in a fully functioning state. It is unwise to use this branch in a production system you care deeply about.

By default, the installation generator (rails g spree:install) will run migrations as well as adding seed and sample data. This can be disabled using

rails g spree:install --migrate=false --sample=false --seed=false

You can always perform any of these steps later by using these commands.

bundle exec rake railties:install:migrations
bundle exec rake db:migrate
bundle exec rake db:seed
bundle exec rake spree_sample:load

There are also options and rake tasks provided by solidus_auth_devise.


You may notice that your Solidus store runs slowly in development mode. This can be because in development each CSS and JavaScript is loaded as a separate include. This can be disabled by adding the following to config/environments/development.rb.

config.assets.debug = false


To gain some extra speed you may enable Turbolinks inside of Solidus admin.

Add gem 'turbolinks', '~> 5.0.0' into your Gemfile (if not already present) and append these lines to vendor/assets/spree/backend/all.js:

//= require turbolinks
//= require backend/app/assets/javascripts/spree/backend/turbolinks-integration.js

CAUTION Please be aware that Turbolinks can break extensions and/or customizations to the Solidus admin. Use at own risk.

Developing Solidus

  • Clone the Git repo

    git clone git://
    cd solidus
  • Install the gem dependencies

    bundle install


Solidus is meant to be run within the context of Rails application. You can easily create a sandbox application inside of your cloned source directory for testing purposes.

This sandbox includes solidus_auth_devise and generates with seed and sample data already loaded.

  • Create the sandbox application (DB=mysql or DB=postgresql can be specified to override the default sqlite)

    bundle exec rake sandbox
  • Start the server

    cd sandbox
    rails server


Solidus uses RSpec for tests. Refer to its documentation for more information about the testing library.


We use CircleCI to run the tests for Solidus as well as all incoming pull requests. All pull requests must pass to be merged.

You can see the build statuses at

Run all tests

ChromeDriver is required to run the frontend and backend test suites.

To execute all of the test specs, run the bin/build script at the root of the Solidus project:

createuser --superuser --echo postgres # only the first time

The bin/build script runs using PostgreSQL by default, but it can be overridden by setting the DB environment variable to DB=sqlite or DB=mysql. For example:

env DB=mysql bin/build

If the command fails with MySQL related errors you can try creating a user with this command:

# Creates a user with the same name as the current user and no restrictions.
mysql --user="root" --execute="CREATE USER '$USER'@'localhost'; GRANT ALL PRIVILEGES ON * . * TO '$USER'@'localhost';"

Run an individual test suite

Each gem contains its own series of tests. To run the tests for the core project:

cd core
bundle exec rspec

By default, rspec runs the tests for SQLite 3. If you would like to run specs against another database you may specify the database in the command:

env DB=postgresql bundle exec rspec

Code coverage reports

If you want to run the SimpleCov code coverage report:

COVERAGE=true bundle exec rspec


In addition to core functionality provided in Solidus, there are a number of ways to add features to your store that are not (or not yet) part of the core project.

A list can be found at

If you want to write an extension for Solidus, you can use the solidus_cmd gem.


Solidus is an open source project and we encourage contributions. Please read before contributing.