Spree is a complete open source commerce solution for Ruby on Rails. It was originally developed by Sean Schofield and is now maintained by a dedicated core team. You can find out more about by visiting the Spree e-commerce project page.
Spree actually consists of several different gems, each of which are maintained in a single repository and documented in a single set of online documentation. By requiring the Spree gem you automatically require all of the necessary dependency gems. Those gems are as follows:
- spree_api
- spree_auth
- spree_core
- spree_dash
- spree_promo
- spree_sample
All of the gems are designed to work together to provide a fully functional e-commerce platform. It is also possible, however, to use only the pieces you are interested in. So for example, you could use just the barebones spree_core gem and perhaps combine it with your own custom authorization scheme instead of using spree_auth.
Start by adding the gem to your existing Rails 3.x application's Gemfile
gem 'spree'
Update your bundle
$ bundle install
Then use the install generator to do the basic setup
$ rails g spree:site
Now you just need to run the new migrations, and setup some basic data
$ bundle exec rake db:migrate
$ bundle exec rake db:seed
If you also want some sample products, orders, etc. to play with you can run the appropriate rake task.
$ bundle exec rake spree_sample:load
The source code is essentially a collection of gems. Spree 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.
-
Clone the git repo
git clone git://github.com/spree/spree.git spree cd spree
-
Install the gem dependencies
bundle install
-
Create a sandbox rails application for testing purposes (and automatically perform all necessary database setup)
bundle exec rake sandbox
-
Start the server
cd sandbox rails server
If you want to run all the tests across all the gems then
$ cd spree
$ bundle exec rake #=> 'this will run both spec and cucumber tests for all the gems'
Each gem contains its own series of tests, and for each directory, you need to do a quick one-time creation of a test application and then you can use it to run the tests. For example, to run the tests for the core project.
$ cd core
$ bundle exec rake test_app
Now you can run just the specs, just the features or everything together
$ bundle exec rake spec
$ bundle exec rake cucumber
$ bundle exec rake #=> 'this will run both spec and cucumber tests for the gem'
If you want to run specs for only a single spec file
$ bundle exec rspec spec/models/state_spec.rb
If you want to run a particular line of spec
$ bundle exec rspec spec/models/state_spec.rb:7
If you want to run a single cucumber feature
$ bundle exec cucumber features/admin/orders.feature --require features
If you want to run a particular scenario then include the line number
$ bundle exec cucumber features/admin/orders.feature:3 --require features
Spree is an open source project. We encourage contributions. Please see the contributors guidelines before contributing.