Amazon S3: Como implementarlo con Rails? Parte I

railsas3.png
Sistema de archivos del CMS que me encuentro desarrollando

Implementaremos una aplicación en Rails apegado al modelo REST que nos permitirá subir archivos a un Bucket en Amazon S3. Usando algunos plugins también serás capaz de crear thumbnails de tus archivos si estos son imágenes. Debes estar dispuesto a ensuciarte las manos (Digo, como nos gusta a nosotros, que a jardinear ni a palos).

Requisitos

  • Un Computador
  • Tener instalado Rails y sus amigos
  • Crearte una cuenta en AmazonWS y activar S3 (Necesitas Tarjeta de crédito en dolares, buuu si sé, pero no hay otra opción)
  • Desde el Panel de control tomar tu Access_key_id y tu Secret_access_key
  • Al rededor de xx minutos

Creamos la aplicación

En este caso nuestra aplicación se llamará s3 y la base de datos, no olvides modificar el archivo /config/database.yml y poner los valores que correspondan, como no vamos a testear (mi próximo must do TDD, esta primero en la lista)


rails as3

Creamos nuestra base de datos


mysql -u root -p
>> create database s3_dev;
>> exit;

Creamos nuestra primera migración

Vamos a ocupar scaffold_resource, que vendrá a cambiar definitivamente a scaffold en la versión 2.0 de Rails, lo que nos permitirá tener una flamante estructura REST en nuestro controladores (Nuestros 7 famosos métodos) e inmediatamente creamos nuestro modelo.


ruby script/generate scaffold_resource Archive name:string created_at:datetime updated_at:datetime content_type:string filename:string thumbnail:string size:integer width:integer height:integer parent_id:string

Lo que nos genera automáticamente todo lo necesario para tener desde ya nuestra aplicación corriendo y con el plus de ya tener generado nuestra migración del modelo necesario para nuestros archivos.


create_table "archives", :force => true do |t|
t.column "name", :string
t.column "created_at", :datetime
t.column "updated_at", :datetime
t.column "content_type", :string
t.column "filename", :string
t.column "thumbnail", :string
t.column "size", :integer
t.column "width", :integer
t.column "height", :integer
t.column "parent_id", :integer
end

Para terminar solo tenemos que migrar

rake db:migrate

Quiere probar como vas? arranca el servidor y apunta tu navegador a http://localhost:3000/archives

ruby script/server

Si no fuera porque estamos implementando S3, ya puedes decir que has creado tu primera aplicación en Rails (Claro, si nunca lo habias hecho. Para los viejotes ahora viene lo bueno).

Haciendo la magia

En el próximo articulo, instalaremos las gemas y los plugin necesarios para que todo quede funcionando.

Guardado en: aprender, rubyonrails |

7 Comments

  • Monday, 6 August 2007, 21:31
    By diego

    buenisimo!
    estaria bueno que hagas un paso a paso de la primera aplicacion en rails pero… con lo que necesitamos para empezar.
    yo solo programo en php y no se siquiera que necesito para arrancar con rails, igual seguire leyendo que probablemente ya lo hayas posteado
    muy bueno!

  • Monday, 6 August 2007, 22:39

    Hola Diego, si ya he posteado algo sobre rails, busca con mi tag Ruby on Rails, y de seguro encontraras algo que te ayude a empezar.

    Mantente atento porque seguiré posteando sobre Rails, cada vez espero volcar mas a Rails este blog.

  • Thursday, 6 September 2007, 15:01

    una pregunta, como haces con scaffod_resource esto que hago con scaffold

    ./script/generate scaffold Productos admin/productos
    esto lo hago con scaffold pero no se como hacer esto mismo con scaffold_resource

    Espero que me puedas ayudar

  • Thursday, 6 September 2007, 16:12

    ruby script\generate scaffold_resource Product

    Ojo porque recuerda que Rails vive de las convenciones y una de ellas es pluralizar los controladores segun el nombre del modelo… en este caso es el model product y el controlador será products…

    Si lo haces en español Producto Rails no sabrá como pluralizarlo.. a no ser claro, que tengas algun plugins, gema o un hack propio que te permita hacerlo.

    Saludos

  • Thursday, 18 October 2007, 19:57

    La “pluralización” en rails se hace utilizando los métodos _*pluralize*_ y la “singlularización” con _*singlularize*_ y utlizan la clase “Inflector::Inflections” (http://api.rubyonrails.com/classes/Inflector/Inflections.html).

    Para hacer las pluralizaciones en español tendrías que tener en tu environment.rb el siguiente código:

    Inflector.inflections do |inflect|
    inflect.plural /([aeiou])([A-Z]|_|$)/, '\1s\2'
    inflect.plural /([rlnd])([A-Z]|_|$)/, '\1es\2'
    inflect.singular /([aeiou])s([A-Z]|_|$)/, '\1\2'
    inflect.singular /([rlnd])es([A-Z]|_|$)/, '\1\2'
    end

    _Copiado de:_ http://wiki.onrails.com.ar/wiki/show/diff/Inflections+en+Espa%C3%B1ol

  • Thursday, 18 October 2007, 19:59

    :( no hay textile markup para los comentarios

  • Thursday, 18 October 2007, 21:03

    Gracias e-calas! con respecto a textile son una de las cosas que quiero implementar en mi blog, especialmente para permitir que los codigos sean leíbles más fácilmente.

    Saludos.

Leave a comment