Websites – MVC – Parte 1 – Model, View, Controller – MySQL – Ruby on Rails – Linux

Publicado: 1 de junho de 2014 em Ruby on Rails

Nosso objetivo é entender o conceito da arquitetura de software MVC na construção de um website atrelado a uma conexão com um banco de dados para exibir dados armazenados em tabelas, visto que está apresentação é voltada para sistema operacional Linux, mas vale ressaltar que o seu conteúdo é multi-plataformas, este modelo pode ser portado para Windows, Mac OS X e qualquer outra plataforma que suporte a linguagem de programação Ruby on Rails.

Model – View – Controller

Por padrão um projeto denominado Rails, possui a arquitetura MVC e este projeto pode ser criado de varias formas diferentes, em nosso caso vamos utilizar a IDE de desenvolvimento chamada Aptana Studio 3.

1 – Primeiro precisamos de um banco de dados MySQL, abra o MySQL WorkBench e crie e adicione os diretos adequados ao banco de dados DAprod.

Cria Database

Cria Database

2 – Abra a IDE Aptana e crie um novo projeto do tipo Rails, o nomeie de DA-Solution e marque o botão de radio chamado I´ll Generate my own code. Abra uma nova janela do terminal dentro da IDE Aptana utilizando a barra de ferramentas.

Solução - Projeto - Rails

Solução – Projeto – Rails

3 -Utilizaremos este primeiro projeto como uma solução e é preciso criar um novo projeto Rails para nosso website, na janela inferior do terminal digite os seguintes comandos:

Cria Projeto


rails new DA-Rails -d mysql
cd Da-Rails

Cria o Controller e a View (Controlador e Visão)

rails g controller empresas index

Cria o Model (Modelo)

rails g model empresa codigo:integer nome:string site:string

Cria a migração (Tabela no banco de dados)

rake db:migrate

Inicia o servidor Rails

rails server

4 – Configure o arquivo database.yml encontrado na pasta config e abra o browser e digite o endereço padrão do seu website: http://localhost:3000/empresas/index. Use o arquivo do mesmo nome logo abaixo para referencias de login com o banco de dados.

Website MVC Padrão

Website MVC Padrão

5 – Volte ao MySQL WorkBench. Para um melhor entendimento, vamos inserir as dados manualmente, visto que a tabela já foi criada automaticamente quando utilizamos o comando rake db:migrate. Insira as linhas de dados utilizando a segunda parte do script abaixo.

Inserindo Dados

Inserindo Dados

6 – De volta a IDE Aptana, agora vamos modificar os arquivos de controle e visão para exibir os dados referentes a migração do modelo, para isto utilize os códigos Ruby e Html encontrados abaixo para preencher seu arquivo de controle e sua visão e atualize o website.

Website - MVC - Dados

Website – MVC – Dados

Exemplo:

Neste exemplo criamos um website que possui uma pagina desenvolvida na arquitetura MVC e exibe dados contidos em um base da dados MySQL.

MySQL

Script – Criar banco de dados e direitos adequados

-- Cria banco de dados
Create database DAprod;

-- Cria privilegios para o usuário root
Grant all privileges on DAprod.*
to 'root'@'localhost' identified by 'p@55w0rd';

-- nivela privilegios
FLUSH PRIVILEGES;

-- Use está parte do script após criar o MODEL
-- Coloca o banco de dados em uso
use DAprod;
-- Mostra tabela criada pela migração
select * from empresas;

-- Insere dados
insert into empresas values
 (1, 1, 'Desenvolvimento Aberto',
        'https://desenvolvimentoaberto.wordpress.com/', CURDATE(), null);

insert into empresas values
 (2, 2, 'Desenvolvimento Aberto Tools',
        'http://desenvolvimentoabertotools.wordpress.com/', CURDATE(), null);

insert into empresas values
 (3, 3, 'Desenvolvimento Aberto ERP',
        'Em desenvolvimento - V1.0 - Alpha indisponivel', CURDATE(), null);

Arquivo de Conexão Ruby on Rails – database.yml

# MySQL.  Versions 5.0+ are recommended.
#
# Install the MYSQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: p@55w0rd
  socket: /var/run/mysqld/mysqld.sock

development:
  <<: *default
  database: DAprod

# 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:
  <<: *default
  database: DA-Rails_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: DA-Rails_production
  username: DA-Rails
  password: <%= ENV['DA-RAILS_DATABASE_PASSWORD'] %>

Arquivo – Controle – empresas_controller.rb

class EmpresasController < ApplicationController
  def index
    @empresas = Empresa.all
  end
end

Arquivo – Visão – index.html.erb

<h2>Desenvolvimento Aberto</h2>
<p>Lista de Blogs e Projetos Open Source</p>
<pre>
<table width="500">
<tr>
	<th>Cod:</th>
	<th>&nbsp;&nbsp;</th>
	<th>Empresa:</th>
	<th>&nbsp;&nbsp;</th>
	<th>Site:</th>
</tr>
<% @empresas.each do |empresa| %>

<tr>
<td><%= empresa.codigo%> </td>
<td>&nbsp;&nbsp;</td>
<td><%= empresa.nome%> </td>
<td>&nbsp;&nbsp;</td>
<td><%= empresa.site%> </td>
</tr>

<%end%>
</table>
</pre>
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s