Tipo, eu posso fazer só com a linguagem ruby mesmo, ou tenho que usar o framework ruby on rails?
Ola. boa tarde,
Acho que voce deve estar referindo-se ao Active Record, certo?
Bem, ele eh usado baseado no modelo MVC quando vc cria a sua aplicacao e define as
classes e tabelas. Entretanto, voce pode baixar a gem do active record separadamente e fazer sem Rails.
http://dmathieu.com/en/ruby/ruby-use-active-record-without-rails
Como vai xxmayconxx?
O Rails é formado por vários outros frameworks, um deles é o ActiveRecord, um ORM.
Se você quer usar realmente um banco diretamente pelo Ruby, sem nenhum ORM, não vai ser uma tarefa das mais agradáveis, mas é possível. Ainda assim é bom usar um adaptador para o seu banco de dados, segue como exemplo o de mysql: http://www.tmtm.org/en/mysql/ruby/.
Agora, uma outra opção é usar somente o ActiveRecord, sem usar o Rails inteiro. O link postado pelo el_loko tem um exemplo. Segue abaixo um código que permite fazer isso:
require 'rubygems'
require 'active_record'
#conexão com o banco, precisa ser feito antes da declaração das classes que herdam de ActiveRecord::Base
ActiveRecord::Base.establish_connection(
:adapter => 'mysql2',
:host => 'localhost',
:user => 'root',
:password => '',
:database => 'ar_sem_rails'
)
#classe ActiveRecord que representa sua tabela
class MeuModel < ActiveRecord::Base
set_table_name :meu_model
end
#adicionando um registro
m = MeuModel.new
m.conteudo = 'go!'
m.save
#listando todos os registros
p MeuModel.all
Com isso você ganha toda a inteligência do ActiveRecord para acesso a dados (http://api.rubyonrails.org/classes/ActiveRecord/Base.html), inclusive a “portabilidade” com relação a bancos.
Ps.: para esse exemplo considere a existência de uma tabela “meu_model” no seu banco de dados com a coluna “conteudo”.
Vc não precisa nem mesmo utilizar ActiveRecord diretamente se você estiver utilizando Mongoid por exemplo. Obviamente essa não é uma alternativa para bancos de dados relacionais(Mongoid é para ser utilizado com MongoDB), mas NoSQL é um movimento em acensão. Eu apoio :).