ruby-on-rails - used - sendgrid transactional templates
No puedo incluir SendGrid en mi proyecto de Rails3 (1)
Para cualquiera que no haya leído los comentarios en la publicación original, la respuesta es que el servidor debe reiniciarse una vez que realice los cambios en las dependencias o la configuración de su aplicación.
En cuanto a la razón por la que las cosas funcionaban en la consola, cada vez que carga una consola de Rails, está recargando toda su aplicación, incluidas las nuevas dependencias y archivos de configuración.
Soy muy nuevo en ruby and rails (3 días y estoy contando), así que mi problema probablemente sea algo estúpido. Sin embargo, parece ser algo estúpido que no se pudo resolver buscando respuestas en línea. :(
Estoy creando una aplicación de blog simple siguiendo esta guía: http://guides.rubyonrails.org/getting_started.html . Funciona bien, sin problemas.
Luego configuro SendGrid y también puedo enviar correos electrónicos a través de él.
Ahora, estoy tratando de usar esta gema sendgrid: https://github.com/stephenb/sendgrid . Lo instalé usando ''gem install sendgrid'' y parecía funcionar sin problemas.
De acuerdo con las instrucciones en github, solo necesito agregar "incluir SendGrid" en mi clase de correo y estoy listo para continuar. Hice exactamente eso:
class Emailer < ActionMailer::Base
include SendGrid
...
end
Pero cuando ejecuto la aplicación, aparece este error: constante no inicializada Emailer :: SendGrid
Hice un par de otras cosas que parecían tener sentido en base a lo que he leído hasta ahora:
- Se agregó ''gem sendgrid'' en mi Gemfile. Esto agregó tres líneas a mi Gemfile.lock:
- sendgrid (1.0.1)
- json
- json
- Se agregó ''require sendgrid'' en mi archivo environment.rb.
Sin embargo, el error aún persiste. Una cosa que podría ser indicativa de un problema es que cuando miro $ LOAD_PATH, no tiene el directorio sendgrid. Para comparar, otra gema incluida de la misma manera es sqlite3 y veo la ruta "... / sqlite3-1.3.4 / lib" allí, pero no veo "... / sendgrid-1.0.1 / lib ".
¿Puede alguien discernir qué tipo de estupidez me ha afligido esta vez?
EDITAR:
Descubrí algo muy interesante. Para mí al menos ... Si voy a la consola de rieles, las cosas parecen funcionar bien. Aquí está el resultado de mi sesión:
ruby-1.9.2-p290 :006 > include SendGrid
=> Object
ruby-1.9.2-p290 :007 > sendgrid_category :use_subject_lines
=> :use_subject_lines
ruby-1.9.2-p290 :008 > sendgrid_category "Welcome"
=> "Welcome"
ruby-1.9.2-p290 :009 > p = Post.new(:title => "A new post", :content => "With garbage text")
=> #<Post id: nil, name: nil, title: "A new post", content: "With garbage text", created_at: nil, updated_at: nil>
ruby-1.9.2-p290 :010 > Emailer.send_email("[email protected]", p).deliver
=> #<Mail::Message:2194904560, Multipart: false, Headers: <Date: Thu, 22 Sep 2011 16:52:41 -0700>, <From: ... blah, bah, blah...>>
El correo electrónico fue enviado Y la categoría fue registrada por SendGrid (pude verla en la página de Estadísticas).
Entonces, la gran pregunta es: ¿por qué mi aplicación solo me permite incluir SendGrid cuando ejecuto comandos desde la consola? ¿Cuál es la diferencia en el medio ambiente, etc.?
También tenga en cuenta que los correos electrónicos se envían desde la consola, pero NO desde el flujo de la aplicación, a pesar de que el desarrollo.log dice que se envió un correo electrónico en ambas situaciones ...