Skip to content

Instantly share code, notes, and snippets.

@harssh
Created July 28, 2014 14:45

Revisions

  1. harssh created this gist Jul 28, 2014.
    97 changes: 97 additions & 0 deletions spree_backend_only.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,97 @@
    ### Set up a Spree backend only install

    ```shell
    rails new store-backend
    ```

    ### Gemfile

    ```ruby
    gem 'spree_backend', github: 'spree/spree'
    gem 'devise'
    ```

    ### Install Spree and Devise

    ```
    rails g spree:install
    rails g devise:install
    rails g devise User
    bundle exec rake db:migrate
    ```

    ### This should go in your User model

    ```ruby
    has_and_belongs_to_many :spree_roles

    def has_spree_role?(role)
    self.spree_roles.all.include? role
    end
    ```

    * Generate custom user set up for spree

    ```
    rails g spree:custom_user User
    ```

    * Change Spree.user class to User on initializer spree.rb

    ```
    Spree.user_class = "User"
    ```

    * Add fields to custom user

    ```
    bundle exec rake db:migrate
    ```

    * Remove both all.css and all.js from vendor/assets/javascript|stylesheets/spree/frontend/

    ### Make sure your config/routes.rb look like this

    ```ruby
    Rails.application.routes.draw do
    root to: "spree/admin/orders#index"
    mount Spree::Core::Engine, :at => '/'

    devise_for :users do
    get '/login', :to => "devise/sessions#new"
    delete '/logout', :to => "devise/sessions#destroy"
    end
    end
    ```


    ### Point spree_signup_path to login page

    ```ruby
    # since we don't need signup on a backend install
    def spree_signup_path
    main_app.login_path
    end
    ```

    ### Create admin user via rails console

    ```ruby
    user = User.create(email: "spree@example.com", password: "spree123")
    user.spree_roles << Spree::Role.find_or_create_by(name: "admin")
    ```

    ### Deface admin layout template to add logout link

    Create this file in app/overrides/spree/layouts/admin/inject_login_bar.html.erb.deface

    ```
    <!-- replace_contents "[data-hook='admin_login_navigation_bar']" -->
    <ul id="login-nav" class="inline-menu">
    <li><%= link_to('Edit', main_app.edit_user_registration_path) %></li>
    <li><%= link_to('Logout', main_app.destroy_user_session_path, :method => :delete) %></li>
    </ul>
    ```