agosto 17th, 2011 § § permalink
This is the first time that I blog in english, so please correct me if I write something wrong. Suggestions are welcome too =)
CouchDB automatically generates UUIDs if none are provided. Usually, it’s recommended because some things like replication. However, we can do better for users. UUIDs are ugly, then we can create friendly urls.
CouchRest Model Slug is a simple gem to generate better urls using CouchRest Model in an easy way. I created this gem based on Mongoid Slug.
Getting Started
Add to Gemfile
gem "couchrest_model_slug", "~> 0.0.2"
A simple example
class Post < CouchRest::Model::Base
include CouchRest::Model::Slug
property :title
property :text
slug :title
end
Querying
p = Post.create(:title => "CouchDB Time To Relax")
p.to_param # => "couchdb-time-to-relax"
Post.find("couchdb-time-to-relax") # =>#<Post slug: "couchdb-time-to-relax", title: "CouchDB...
CouchRest Model Slug was made to work with or without slugged value, then it uses the id to keep things running with no problems.
Post.create(:text => "post without slug") # => #<Post slug: "", title: nil, text: "post with no slug", _id: "9fdfdd090897680de59091c8c98ff064"...
Post.find("9fdfdd090897680de59091c8c98ff064") # => #<Post slug: "", title: nil, text: "post with no slug", _id: "9fdfdd090897680de59091c8c98ff064"...
See the github page for more information https://github.com/lucasrenan/couchrest-model-slug
julho 29th, 2011 § § permalink
Galera, já faz quase um ano que estou trabalhando para a nu design e nós estamos contratando programadores ruby \0/
A nu é um estúdio de design gráfico de São Paulo, com um trabalho forte em web. O estúdio é consagrado pelo bom desenho e por ter uma pesquisa permanente, também na área do desenvolvimento. Informal e descontraído –porém extremamente profissional e produtivo– o estúdio mantém uma equipe de ponta que trabalha duro (apenas durante a semana!) para entregar o próximo projeto sempre melhor que o anterior.
desenvolvedor ruby on rails
requisitos
- experiência em ruby
- testes automatizados
- xhtml / css
- javascript / jquery
diferenciais
- mongodb
- rspec (tdd e bdd)
- práticas ágeis (scrum e xp)
- nginx e passenger
é seu perfil? envie seu cv e usuário do github para contrata@nudesign.com.br
agosto 30th, 2010 § § permalink
Quem não está muito ligado na comunidade Ruby talvez só tenha ouvido falar sobre o Rails. É claro que o Rails é o framework mais famoso de Ruby e vem ajudando a alavancar o crescimento da linguagem, porém existem outros frameworks e DSLs em Ruby. Uma DSL muito boa é o Sinatra. O Sinatra é uma DSL para se criar aplicações web de maneira rápida e com o mínimo de esforço. (eu aprendi a utilizá-lo com o Anderson Leite da Caelum)
O Sinatra possui algumas diferenças com relação ao Rails como por exemplo, não segue o padrão MVC. Seu uso é recomendado para resolver problemas pequenos e é realmente bem fácil utilizá-lo.
Vamos supor que você precise fazer algo simples como criar uma listagem qualquer ou qualquer outra coisa simples não compensando o desenvolvimento em Rails. (hoje eu precisei criar um sitemap com alguns dados da minha aplicação, bem simples, algo que não seria necessário agregar ao escopo da minha aplicação Rails).
Antes de começar é necessário instalar o Sinatra
sudo gem install sinatra
Vou utilizar também o MySQL e o Data Mapper como ORM
sudo gem install dm-core
sudo gem install dm-mysql-adapter
Supondo então que quero fazer uma simples consulta em uma tabela posteriormente criada e com dados cadastrados.
Crie o arquivo my_sinatra.rb com seu editor preferido
require 'rubygems'
require 'sinatra'
require 'dm-core'
#conexao com mysql
DataMapper.setup(:default, "mysql://user:pass@localhost/database")
#classe qualquer
class Product
include DataMapper::Resource
property :id, Serial
property :name, String
property :status, String
def self.active
all(:status => "A")
end
end
#listando produtos ativos
get '/' do
@products = Product.active
erb :index
end
#utilizando SQL diretamente
get '/sql' do
@products = repository(:default).adapter.select("SELECT * FROM produtos WHERE status = 'A'")
@products.collect{|p| p.id.to_s + " "}
end
Crie também uma pasta chamada views e o arquivo index.erb
<% @products.each do |p| %>
<%= p.name %><br />
<% end %>
Para startar a aplicação
ruby my_sinatra.rb
O Sinatra roda na porta 4567 (http://localhost:4567/)
Repare que as urls são definidas no início do bloco: get ‘/’ do…
Para complementar o post, recomendo a leitura:
http://www.sinatrarb.com/intro
http://datamapper.org/getting-started
janeiro 24th, 2010 § § permalink
O CakePHP é um framework para desenvolvimento rápido de aplicações em PHP. Baseado no Ruby on Rails, segue o paradigma da convenção sobre configuração. Usa design patterns como MVC e ORM, reduz os custos de desenvolvimento e ajuda os desenvolvedores a escreverem menos código.
Apesar de ser um bom framework e ser baseado no Rails, a principal diferença que faz o Rails mais vantajoso (fora o nível da comunidade ruby ser maior que o nível da comunidade php) é a própria sintaxe do Ruby em relação ao PHP. Eu particularmente recomendo fortemente o desenvolvimento em PHP utilizando o CakePHP, mas na minha opinião nada supera o Rails.
Abaixo segue um exemplo de uma consulta (inner join) entre dois modelos (Agencia e Cidade que possuem um relacionamento has_and_belongs_to_many) para uma consulta em que devem ser listadas as cidades (distintamente) que possuem relacionamento com agências ordenadas pelo nome:
O SQL esperado
SELECT cidades.id, cidades.nome FROM `cidades` INNER JOIN agencias_cidades ON (`agencias_cidades`.`cidade_id` = `cidades`.`id`) GROUP BY `cidades`.`id` ORDER BY `cidades`.`nome` ASC
Um possível exemplo no CakePHP (no controller agencias)
function index() {
$cidades = $this->Agencia->Cidade->find('all', array(
'recursive' => 0,
'fields' => array('Cidade.id, Cidade.nome'),
'joins' => array(array(
'table' => 'agencias_cidades',
'type' => 'INNER',
'conditions' => array('agencias_cidades.cidade_id = Cidade.id')
)),
'order' => array('Cidade.nome'),
'group' => array('Cidade.id')
));
$this->set('cidades', $cidades);
}
Um possível exemplo no Ruby on Rails (no controller agencias)
def index
@cidades = Cidade.all :select => "cidades.id, cidades.nome",
:joins => "INNER JOIN agencias_cidades ON (`agencias_cidades`.`cidade_id` = `cidades`.`id`)",
: order => "cidades.nome",
:group => "cidades.id"
end
Esse é um exemplo bem simples, porém fica nítido a simplicidade do código, mesmo sem levar em consideração que no Rails bastaria uma linha em cada modelo para definir o relacionamento, enquanto que no Cake seria necessário mais linhas.
