Saltar a contenido

Spree

Enlaces

Hilos interesantes Google Group

Extensiones interesantes

  • Static Content: Content management of static pages for Spree. Para páginas como About, Términos legales, etc. (en Github) :exclamation:
  • Related Products: This extension provides a generic way for you to define different types of relationships between your products, by defining a RelationType for each type of relationship you’d like to maintain. (en Github) :exclamation:
  • Spree Variant Options: Spree Variant Options replaces the radio-button variant selection with groups of option types and values. (en Github) :exclamation:
  • SpreeEditor: This extension provides an inline rich-text editor for Spree.
  • Spree Simple Blog: Adds a simple blog to Spree which works much like Toto.
  • Spree Reviews: Straightforward review/rating facility.
  • Spree Wishlist: The Spree Wishlist extension enables multiple wishlists per user, as well as managing those as public (sharable) and private. It also includes the ability to notify a friend via email of a recommended product. :exclamation:
  • Spree Email to Friend: The Spree Email to Friend extension enables you to send the product reference to your friend via email. :exclamation:
  • Google Checkout: Users can place order through Google Checkout.
  • Spree Sitemaps: This extension creates sitemaps in .html, .txt, and .xml (google sitemap) formats.
  • Spree_Videos: Display YouTube video(s) on your product page. (en Github)
  • SpreeProductZoom: A Spree extension that adds lightbox zoom functionality for product images powered by fancyBox. (en Github)
  • Sitemap Generator: Spree sitemap generator is a sitemap generator based on the sitemap_generator gem. It adheres to the Sitemap 0.9 protocol specification. (en Github)
  • Spree Google Merchant: This extension provides a product feed for Google Merchant rather than a file that you have to upload. (en Github)
  • spree-magiczoomplus: Adds MagicZoomPlus to Spree store. (en Github)
  • Spree Social Bookmarks: This extension allows you to add social bookmarking to your products so your customers can share pages. (en Github)
  • Spree Volume Pricing: This extension uses predefined ranges of quantities to determine the price for a particular product variant. (en Github)
  • Active Shipping: Spree calculator that interfaces with USPS, UPS and FedEx via the popular active_shipping plugin. (en Github)
  • Payment Methods With Range: This extensions allow declaring payment methods only available for a certain order amount. (en Github)
  • Print Invoice: Generación de facturas en PDF en el backend. (en Github)
  • Product Assembly: Create a product which is composed of other products.
  • SpreeBootstrap: This project aims to replace the spree_frontend's use of the skeleton css framework in favor of Twitter Bootstrap.
  • SpreeContactUs: A Rails 3+ Engine providing a basic contact form as a Spree Extension.

Instalación en Ubuntu

A los paquetes necesarios para la instalación de Rails hay que añadir:

  • libxml2-dev
  • libxslt1-dev
  • git

Tips

Override de preferencias

Crear el fichero config/initializers/spree_config.rb y hacer un set de las propiedades. Por ejemplo:

#encoding: utf-8
Spree::Config.set(logo: "store/myapp_logo.png")
Spree::Config.set(site_name: 'MyApp')
Spree::Config.set(currency: 'EUR')
Spree::Config.set(currency_symbol_position: 'after')
Spree::Config.set(default_meta_description: 'MyApp')
Spree::Config.set(default_meta_keywords: 'mis palabras clave')

Todas las preferencias posibles están definidas en el fichero core/app/models/spree/app_configuration.rb.

Las preferencias ajustadas de esta forma acaban en la base de datos en la tabla spree_preferences. Si se quita alguna de las lineas anteriores, hay que eliminar el registro correspondiente para que deje de hacer efecto. En ocasiones no es suficiente con esto, ya que también puede influir el hecho de que algunas queries son cacheadas. En ese caso hay que borrar el directorio tmp/cache.

Actualización de versión

Cuando aparezca una nueva versión de Spree y se quiera actualizar hay que proceder como sigue:

$ bundle update spree
$ bundle exec rake railties:install:migrations
$ bundle exec rake db:migrate

Tareas "rake"

  • bundle exec rake assets:precompile:nondigest: Mejora el rendimiento en el entorno de desarrollo a costa de no refrescar en tiempo real los cambios en los assets.
  • bundle exec rake assets:clean: Borra el directorio public/assets.
  • bundle exec rake assets:precompile: Reconstruye el directorio public/assets.
  • bundle exec rake spree_auth:admin:create: Crea un usuario administrador.
  • bundle exec rake spree_sample:load: Cargar los datos de ejemplo. Exige ejecutar previamente bundle exec rake db:seed

Instalación de versión 2.0

El instalador de las últimas versiones no es del todo redondo (al menos en el momento de escribir esto) y da algunos errores. Para superarlos hay que proceder como sigue.

Ejecutar en consola lo siguiente:

$ rails new spapp

Modificamos la linea de la gem jquery-rails poniendo:

1
gem 'jquery-rails', '~> 2.2.1'

Ejecutamos:

$ cd spapp
$ spree install

Decimos "yes" a todas las preguntas. Cuando termine volvemos a modificar Gemfile sustituyendo las versiones de las gems de Spree que ha añadido el script por las siguientes:

1
2
3
gem 'spree', :github => 'spree/spree', :branch => '2-0-stable'
gem 'spree_gateway', :github => 'spree/spree_gateway', :branch => '2-0-stable'
gem 'spree_auth_devise', :github => 'spree/spree_auth_devise', :branch => '2-0-stable'

Finalmente de nuevo ejecutamos:

$ bundle install

Configuración para enviar correos

Hay dos formas:

  1. Configurando directamente el ActionMailer por código
  2. Usando el override que permite configurar el ActionMailer en el backend

Para el primer tipo empezamos poniendo las siguientes preferencias en el fichero config/initializers/spree.rb:

config.override_actionmailer_config = false
config.mails_from = "origen@mail.com"

Luego añadimos lo siguiente en el fichero de configuración del entorno, por ejemplo en development sería config/environments/development.rb:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'gmail.com',
  user_name:            'user_id',  # No es necesario poner @gmail.com
  password:             'password',
  authentication:       'plain',
  enable_starttls_auto: true  }

En teoría con esto sería suficiente, pero en las primeras pruebas hechas, sólo funcionó con la versión 2.5.3 de la gem mail, por lo que hubo que especificarla en el Gemfile:

gem 'mail', '2.5.3'

La última versión de mail es la 2.5.4 que será la que normalmente esté instalada. Para hacer el downgrade hay que ejecutar desde el directorio de nuestro proyecto:

$ bundle update mail

En posteriores versiones de las gemas ya funcionaba con la versión 2.5.4 de mail por lo que dejó de ser necesario hacer este apaño.

Para el segundo tipo de configuración empezamos poniendo las siguientes preferencias en el fichero config/initializers/spree.rb:

config.override_actionmailer_config = true
config.mails_from = "origen@mail.com"

Como siempre que se tocan las preferencias, hay que vigilar si ya existe versión de la misma en la tabla spree_preferences y si está la consulta a esta tabla cacheada, por lo que habrá que borrar el directorio tmp/cache.

Luego deberemos acudir en el backend a la siguiente ruta: "Configuraciones / Preferencias métodos de email". Hay que tener en cuenta que este grupo de opciones sólo aparece si la opción override_actionmailer_config tiene el valor true. A continuación se muestran pantallazos de un par de configuraciones que se ha probado que funcionan:

Conf con GMail

Conf con DH

Configuración según entorno

Si queremos ajustar algunas preferencias en el initializer config/initializers/spree.rb de manera que su valor dependa del environment, podemos hacer lo siguiente:

Spree.config do |config|
  if Rails.env.production?
    config.mail_port = 1025
    # other configs ..
  else
    config.mail_port = 25
    # other configs ..
  end
end

Resetear base de datos

Si queremos comenzar de nuevo en lo que respecta a la base de datos, se puede hacer fácilmente con el siguiente comando:

$ bundle exec rake db:reset

A nivel de ficheros habrá que hacer la limpieza a mano. En el Spree básico, como mínimo habría que borrar el directorio rails_root/public/spree/products.