Cómo crear un blog desde cero usando Ruby on Rails en Ubuntu

abril 26 201015 comentarios

Guardado en : Programación, Social / Internet, Tecnología

Creación de un nuevo proyecto Rails para tu blog

Antes de poder hacer cualquier cosa, tiene que crear un nuevo proyecto. En Rails, un proyecto es una estructura de carpetas que se utiliza para almacenar todos los archivos, que son pertinentes para la aplicación web. Para crear un proyecto, ejecute el siguiente comando en una terminal.

> rails myblog -d mysql

Tenga en cuenta, en este caso estamos usando MySQL como SGBD,Este comando creará una carpeta llamada blogtuto que contiene todas las carpetas del proyecto. Importante archivos y carpetas

Archivo / Carpeta Propósito
config\database.yml Este archivo es un YAML (que significa – YAML Ain’ta Markup Language) de archivos. Contiene detalles acerca de su proveedor de DBMS y los datos de autentificación para su DBMS.
config\routes.rb Este es un archivo de rubí.Le permite configurar el número de solicitudes HTTP serán enviados.
app\controllers\ Contiene archivos de los controladores. Los controladores son archivos de ruby.
app\helpers\ Contiene los archivos de ayuda.
app\models\ Contiene archivos de modelo. Heredan la mayor parte de la funcionalidad de ActiveRecord, pero también se puede aprovechar esta funcionalidad al escribir sus propios métodos.
app\views\ Contiene una subcarpeta para cada archivo de controlador. Por ejemplo, si hay un controlador llamado "posts_contoller.rb" habrá una subcarpeta llamada "posts".
public\images\ Contiene los archivos de imágenes que pertenecen a su sitio web.
public\javascripts\ Contiene los archivos javascript que son utilizadas por su sitio web.
public\stylesheets\ Contiene los archivos CSS que pertenecen a su sitio web.
db\migrate Utilizado para migrar una base de datos de un estado a otro.

Ahora nos ubicaremos dentro de la carpeta del proyecto, ejecuté el siguiente comando.

> cd blogtuto Scaffolding Scaffolding se puede utilizar para la construcción de prototipos rapidos para su cliente. También puede ser muy útil para aprender a usar Rails. En un simple comando puede crear un modelo, controlador y varios puntos de vista, efectivamente la construcción de una gran parte de la funcionalidad de un solo golpe. Creación de Posts utilizando Scaffolding Para crear los archivos necesarios para el Scaffolding, se pueden generan ejecuntando el comando:

> ruby script/generate scaffold post title:string body:text

Este comando crea muchos archivos. Se crea un controlador para los puestos llamados posts_controller.rb y un modelo llamado post.rb.También puede haber notado que la especificación de los campos que se desean es decir, el título y el cuerpo, además de sus tipos de "cadena" y "texto", respectivamente.

Creación de Posts utilizando Scaffolding

Del mismo modo, para crear los archivos necesarios para los comentarios, ejecute este comando:

> ruby script/generate scaffold comment name:string body:text post:references

Al final de este comando, usted puede haber notado el texto "post: references". Esto será utilizado para crear el campo de clave externa para ligarse a la clave principal de la tabla posts.

Relacionando los modelos Post y Comment

Se debe editar los archivos post.rb y comment.rb ambos ubicados en la ruta /blogtuto/app/models/ post.rb

class Post < ActiveRecord::Base
  has_many :comments
end

comment.rb

class Comment < ActiveRecord::Base
	belongs_to :post

Esto hace que sea muy fácil de encontrar los registros asociados. Usted verá lo fácil después, cuando tengamos que mostrar los comentarios, que esten relacionados con un campo determinado.

¿Cómo puedo crear la base de datos y tablas?

Ahora que ha creado los modelos, es necesario crear la base de datos a continuación, crear tablas para almacenar información acerca de las fotografías y comentarios.Para crear la base de datos es necesario añadir el nombre de usuario y contraseña en el archivo database.yml ubicado en la ruta /blogtuto/config/.

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: myblog_development
  pool: 5
  username: root

  password: su-password
  host: localhost



Después de haber modificado el archivo database.yml con sus datos de inicio de sesión de base de datos, tiene que ejecutar el comando:

 > rake db:create

Migración de la base de datos En Rails, una migración es el nombre dado al proceso de trasladar su base de datos de un estado a otro. Algunos ejemplos de la migración de su base de datos de un estado a otro son:

  • Creación de tablas
  • Extracción de tablas
  • Adición de nuevos campos
  • Extracción de los campos

Para migrar las tablas debe ejecutar el siguiente comando:

  > rake db:migrate

Vamos a ver cómo se ven las cosas !! vamos a arrancar WEBrick, Rails incorpora el servidor web, y veremos cómo se ven las cosas.

> ruby script/server


Ahora vaya a http://localhost:3000/posts en su navegador favorito y usted debería ver una pantalla similar a la siguiente captura de pantalla. Si hace clic en el "New Post",se le dirigirá a la URL, http://localhost:3000/posts/new, donde se le presentará un formulario para la creación de nuevos posts. Esta solicitud de URL llama el metodo "new " en el controlador de mensajes, entonces se muestra la vistal "new.html.erb".

La creación de una página de inicio

Para ello, primero tendrá que eliminar el archivo index.html que se encuentra en la ruta /blogtuto/public/.

La segunda cosa que hay que hacer es crear una ruta en el archivo de configuración routes.rb que se encuentra en la ruta /blogtuto/config/. Abra este archivo en su editor y añada una nueva línea hasta el final con map.root, como se muestra a continuación.

ActionController::Routing::Routes.draw do |map|
  map.resources :comments
  map.resources :posts
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
  map.root :controller => "post"

end

Permita que el usuario ponga algún comentario! Antes de hacer cualquier cambio editamos el archivo routes.rb que anteriormente ya habiamos configurado ,quedara de esta manera.

ActionController::Routing::Routes.draw do |map|
  map.resources :posts, :has_many => :comments

  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
  map.root :controller => "post"
end

Modificar la vista Ahora modifique los puntos de vista del archivo show.html.erb que se encuentra en /blogtuto/app/views/posts/ y agregue el siguiente codigo:

<p>
  <b>Title:</b>
  <%=h @post.title %>

</p>

<p>
  <b>Body:</b>
  <%=h @post.body %>
</p>

<h2>Comments</h2>

<% @post.comments.each do |c| %>
  <p>
    <b><%=h c.name %> said:</b><br />
    <%= time_ago_in_words(c.created_at) %> ago
  </p>

  <p>
    <%=h c.body %>
  </p>
<% end %>

<% form_for [@post, Comment.new] do |f| %>
  <p>

    <%= f.label :name, "Author" %><br />
    <%= f.text_field :name %><br />
    <%= f.label :body, "Comment Description" %><br />
    <%= f.text_area :body %>
  </p>

  <p>
    <%= f.submit "Add Comment" %>
  </p>
<% end %>


Modificar los Comentarios Controlador

Quite todos los métodos que se crea automáticamente en el archivo comments_controller.rb que se encuentra en /blogtuto/app/controllers/ , ya que no son necesarios para nuestra aplicación web. Añadir un nuevo método llamado "create" como se mque se encuentra en uestra en el código de abajo.

class CommentsController < ApplicationController
  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.create!(params[:comment])
    redirect_to @post
  end
end



Actualiza el navegador (asegúrese de que su servidor todavía se está ejecutando en la terminal). Usted debe obtener algo similar a la siguiente captura de pantalla.

Con esto damos por concluido este tutorial, cualquier duda, sugerencia o comentario serán recibidos.

Quizá te interese :

Acerca del autor:

Soy un chavo de 22 años ,estoy en la última etapa de mi carrera (Ingeniería en sistemas computacionales) mi objetivo profesional es desarrollar mi creatividad y poner en acción todos los conocimientos que he adquirido dentro y fuera de mi carrera, así mismo pretendo desarrollar mis habilidades técnicas y adquirir experiencia, integrando mis conocimientos, valores y habilidades para desarrollar mi trabajo con la mayor eficiencia y eficacia posible, y darle un valor agregado a mi trabajo, dando lo mejor de mí en mis labores.

15 Respuestas a “Cómo crear un blog desde cero usando Ruby on Rails en Ubuntu”

  1. dora dice:

    hola que tal, soy nuevo en esto pero me intereso este post
    y tengo un problema al momento de querer modificar los archivos post y coment puesto que solo me aparece el archivo post y el archivo coment no me aparece.
    Por favor me podrías decir que hacer
    gracias
    Saludos

  2. Daniel dice:

    Hola dora!
    Realizaste el scaffold del comment?

    ruby script/generate scaffold comment name:string body:text post:references

    Espero te ayude

  3. Hola, que tal, Dora te comento que tuve algunos errores parecidos a los tuyos y todo eso me paso por quererlo hacer rápido lee bien el tutorial y hazlo con calma, paso a paso y veraz que no tendrás problemas y luego vuelve a leer el tuto y ve revisando tu trabajo para que lo entiendas mejor, espero te sirva de algo mi respuesta y la de Daniel, gracias cualquier otra duda estamos para ayudarte.

  4. dora dice:

    gracias por sus respuestas y si por querer hacerlo rapido me paso eso
    muchas gracias por sus respuestas
    Saludos

  5. Jona dice:

    disculpa tengo una duda en la parte de crear la base de datos y las tablas, puesto que a mi sale esto
    # SQLite version 3.x
    # gem install sqlite3-ruby (not necessary on OS X Leopard)
    development:
    adapter: sqlite3
    database: db/development.sqlite3
    pool: 5
    timeout: 5000

    # Warning: The database defined as “test” will be erased and
    # re-generated from your development database when you run “rake”.
    # Do not set this db to the same as development or production.
    test:
    adapter: sqlite3
    database: db/test.sqlite3
    pool: 5
    timeout: 5000

    production:
    adapter: sqlite3
    database: db/production.sqlite3
    pool: 5
    timeout: 5000

    y me imagino que tengo que meter el usuario y el password al principio pero no se si cambiar los demás campo también

  6. Daniel dice:

    Hola Jona!
    Si, en el caso del tutorial, se trabaja con mysql (se configuran los datos de tu conexión como usuario, host y password), junto con el adapter de mysql.
    Rails de manera predeterminada trabaja con sqlite, una base de datos ideal para realizar pruebas en local, pero no aconsejada para aplicaciones reales.
    Sigue las instrucciones del tutorial paso a paso y aquí estamos para ayudarte.
    Saludos

  7. Jona dice:

    hola gracias por la respuesta tan inmediata
    y se supone que también lo hice con mysql como lo dice el tutorial pero me aparece eso no me aparece lo de mysql al momento de querer crear la parte de las bases de datos y las tablas

  8. Daniel dice:

    Hola Jona!
    Lo que pasa es que hay que editar tu archivo config/database.yml, para que corresponda a tus datos (incluido el adapter), antes de cambiarlo a mysql, instala la ruby gem de mysql.

    sudo gem install mysql

    Puede que necesites bajar las librerías de desarrollo de mysql (mysql-dev) para compilar la gem.
    Seguimos en contacto

  9. SIDNED dice:

    Hola amiga se que me vas a matar, pero desafortunamente estoy ahciendolo en windows..

    Y tengo un problema al crear el archivo me sale el siguiente error.

    http://localhost:3000/say_hello/index

    We’re sorry, but something went wrong.
    We’ve been notified about this issue and we’ll take a look at it shortly.

    espero me puedan ayudar

  10. Daniel dice:

    Los autores de Ruby y Rails recomiendan usar algún Unix de preferencia (Linux, OSX, Solaris), puedes revisar el registro de errores en la carpeta log/development.log o utilizar los métodos que genera el scaffolding.

  11. German dice:

    muy bien,,tenia tiempo buscando una buena explicacion,, gracias!!!

  12. rancesvinto dice:

    Al ejecutarlo me produce el error

    undefined method `post_comments_path’ for #<#:0xae4e198>

    Extracted source (around line #25):

    22:
    23:
    24:
    25:
    26:
    27:
    28:

    ¿será por algún problema en las rutas? utilizo rails 3

    Gracias!!

  13. rancesvinto dice:

    Me autorrespondo para quien utilie RAILS 3:

    En rails 3 no se puede utilizar :has_many en routes.rb (sólo en models se puede utilizar). En su lugar debemos hacer:

    resources :posts do
    resources :comments
    end

  14. Daniel dice:

    Gracias por el aporte, Rails3 cambia bastante el juego, estamos preparando algo sobre Rails3 para ponerlo en el sitio.
    Todavía hay una gran base de usuarios de rails 2.x y todavía el tutorial servirá para quién tenga que enfrentarse a esas versiones “legacy”.

  15. Maria Helena dice:

    Hola a todos es la primera vez que uso Ruby on Rail y tengo una duda, estoy haciendo una web en dreamweaver y queria incorporar un blog hecho con este programa y mi pregunta es: ¿como puedo luego incluirlo en mi web? ¿Podria hacerle el mismo diseño al blog que tiene mi pagina? me refiero al mismo fondo y demás…
    os agradeceria mucho vuestra ayuda.

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->