Spree

Enlaces

Hilos interesantes Google Group

Extensiones interesantes

Instalación en Ubuntu

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

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”

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:

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:

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.