X
Identifiant Mot de passe
  Admin Blog Accueil Blog Créér un blog Mail Actualités ToutApprendre Soutien Scolaire Shopping Mag des Voyages Recherche Web
OK
Blog sur Ruby On Rails
mercredi 21 janvier 2009, a 10:46
Des graphiques avec Rails et Google Charts on Rails
 

Rien de plus simple que Google Charts on Rails pour créer des graphiques.

Page du projet :
http://code.google.com/p/google-charts-on-rails/

Il faut l'installer :

ruby script/plugin install http://google-charts-on-rails.googlecode.com/svn/google_charts_on_rails/


Sous NetBeans :

Ajouter le dépot :

http://google-charts-on-rails.googlecode.com/svn/

et installer le plugin google_charts_on_rails


En ce qui concerne l'utilisation, rien de plus simple :

Dans une vue :

<%= image_tag GoogleChart.pie(10,20,40,30).to_url %>
chart?chs=200x200&cht=p&chd=t:10,20,30,40&.png

Autres exemples :



GoogleChart.pie_3d_350x150('year 1997'=>10,'year 1998'=>20,'year 1999'=>15,'year 2000'=>55).to_url
GoogleChart.pie_100x200(10,20,40,30).to_url

jeudi 15 janvier 2009, a 14:51
Auto-complete Rails + Scriptaculous
 

Installer le plugin :
auto_complete

Générer la doc :
rake doc:plugins:auto_complete

<%= javascript_include_tag :all  %>
<%= text_field_with_auto_complete :appellation, :name, {}, {:method => :get} %>
ou suffisant :
<%= text_field_with_auto_complete :appellation, :name %>

class AppellationController < ApplicationController
  auto_complete_for :appellation, :name
  #protect_from_forgery :only => [:create, :update, :destroy]
  protect_from_forgery :except => :auto_complete_for_appellation_name

  def new
    @appellation = Appellation.new
  end

end




<%= text_field_with_auto_complete :message, :to, {},:url => {:action => :auto_complete_for_message_to, :id => session[:user].id}, :skip_style => true %>

http://www.xtended-blog.com/weblog/cascade_text_field_with_auto_complete/


mercredi 17 décembre 2008, a 14:44
Problème de routage
 

Après la création d'un crontrolleur, pour éviter d'avoir l'erreur :
No route matches ”/moncontrolleur/monaction” with {:method=>:get}

il faut ajouter la ligne suivante à la fin de routes.rb
map.route '/:controller/:action'

Une autre solution consiste à ajouter pour chaque controlleur la ligne :
map.resources :moncontrolleurs

mercredi 17 décembre 2008, a 12:55
Créer un reseau social simple avec acts_as_network avec rails
 

Installation du plugin :
Sous netbeans : ajouter le repo :
http://actsasnetwork.rubyforge.org/svn/plugins/acts_as_network/

en mode console :
sudo apt-get install git git-core (pour linux)
script/plugin install git://github.com/sjlombardo/acts_as_network.git

générer la doc :
rake doc:plugins

Version simple

Création d'une table des users
script/generate model user


class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string   :email
      t.string   :hashed_password
      t.string   :salt
      t.datetime :dateLastLogin
      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end


script/generate model friend

class CreateFriends < ActiveRecord::Migration
  def self.up
    create_table :friends, {:id => false} do |t|
      t.column :user_id, :integer, :null => false
      t.column :user_id_target, :integer, :null => false      # target of the relationship
      t.timestamps
    end
  end

  def self.down
    drop_table :friends
  end
end


-> effectuer la migration

Modification des models

class User < ActiveRecord::Base
  acts_as_network :friends, :join_table => :friends
end


Controleur

  def test_acts_as_network
    jane = User.create(:email => 'Jane')
    jack = User.create(:email => 'Jack')

    jane.friends_out << jack                  # Jane adds Jack as a friend
    puts jane.friends.include?(jack)               # true Jack is Janes friend
    puts jack.friends.include?(jane)               # true Jane is also Jack's friend!
  end



Version avec invitations :


Création d'une table des users
script/generate model user


class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string   :email
      t.string   :hashed_password
      t.string   :salt
      t.datetime :dateLastLogin
      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end


script/generate model invite

class CreateInvites < ActiveRecord::Migration
  def self.up
    create_table :invites do |t|
      t.column :user_id, :integer, :null => false           # source of the relationship
      t.column :user_id_target, :integer, :null => false    # target of the relationship
      t.column :code, :string                                 # random invitation code
      t.column :message, :text                                # invitation message
      t.column :is_accepted, :boolean
      t.column :accepted_at, :timestamp                       # when did they accept?
      t.timestamps
    end
  end

  def self.down
    drop_table :invites
  end
end



Modification des models

class User < ActiveRecord::Base
  acts_as_network :friends, :through => :invites, :conditions => "is_accepted = 1"
end

class Invite < ActiveRecord::Base
  belongs_to :user
  belongs_to :user_target, :class_name => 'User', :foreign_key => 'user_id_target'        # the target of the friend relationship
  validates_presence_of :user, :user_target
end


Controleur :

  def test_acts_as_network
    jane = User.create(:email => 'Jane')
    jack = User.create(:email => 'Jack')

    invite = Invite.create(:user => jane, :user_target => jack, :message => "let's be friends!")

    puts jane.friends.include?(jack)
    puts jack.friends.include?(jane)

    invite.is_accepted = true  # Now Jack accepts the invite
    invite.accepted_at = Time.now
    invite.save and jane.reload and jack.reload

    puts jane.friends.include?(jack)
    puts jack.friends.include?(jane)


  end


mardi 09 décembre 2008, a 15:39
Créer un champ virtuel
 

Pour créer un champ virtuel dans un controler, on utilise attr_accessor :

class Game < ActiveRecord::Base
 attr_accessor :bloque
end


Ce champ ne sera pas stocké en BDD mais sera accessible par l'instance de l'objet :
@game = Game.find 1
@game.bloque = "X"
puts @game.bloque

On peut aussi définir des méthodes :
class Game < ActiveRecord::Base
 attr_accessor :bloque
 def getInfo
   "#{id} / #{bloque}"
 end
end
 

@game = Game.find 1
@game.bloque = "X"
puts @game.getInfo


...

lundi 08 décembre 2008, a 11:25
Scriptaculous Slider pour Rails
 

Comment utiliser le Slider de scriptaculous avec rails.

Il existe un plugin : scriptaculous_slider mais il ne fonctionne plus avec les versions récentes de rails mais on peut quand même s'en inspirer.

On récupère quand même le plugin :
./script/plugin install scriptaculous_slider

Il faut modifier Vendor/plugins/scriptaculous_slider/init.rb :
require 'helpers/slider_helper'
ActionView::Helpers::AssetTagHelper::register_javascript_include_default 'slider'
ActionView::Base.send :include, ActionView::Helpers::SliderHelper



mercredi 26 novembre 2008, a 16:10
Rails + UML + StarUML
 

Comment visualiser schema.rb au format UML (StarUML)

En ligne de commande :
./script/plugin install http://cnruby.googlecode.com/svn/trunk/plugins/uml

rake uml:schema

Pour les utilisateurs de Netbeans :
Click droite sur le projet -> Rails plugins
Dans l'onglet Repositories, ajouter l'url :
http://cnruby.googlecode.com/svn/trunk/plugins/
Aller dans l'onglet New Plugins et installer le plugin uml
Pour lancer la génération :
Click droite sur le projet -> Run/Debug Rake Task...
et lancer uml:schema
Et c'est tout, on obtient un fichier schema.xml dans db

Et pour le visualiser, sous StarUML :
File -> Import -> XMI...

Tuto basé sur :
http://blog.zmok.net/articles/2006/11/13/visualize-your-rails-schema

vendredi 24 octobre 2008, a 11:27
Importer des données de test avec les fichiers yml
 

On peut importer facilement des données dans la bdd avec les fichiers yml :
test.yml
champ1:
  id: 1
  nom: durand
  prenom: jean

champ2:
  id: 2
  nom: dupont
  prenom: jacques

Importer les données d'un fichier dans test/fixtures/*.yml
rake db:fixtures:load

--------------------------------------------------------------------------------
/!\ pour certaines données comme les mot de passe, il faut mettre des " :
hashed_password: "c093739843181d80b35a84b1435a3f859d971b83"


Pour préciser les fichiers yml à importer :
rake db:fixtures:load FIXTURES:fichier1.yml,fichier2.yml

mardi 14 octobre 2008, a 10:55
Utiliser un gestionnaire de version subversion (svn)
 

Cet article ne traite pas directement de rails mais est très pratique dans un projet de développement.

Si vous développez depuis plusieurs endroits, il est parfois fastidieux de trimbaler une clé usb avec ses sources. L'utilisation d'un serveur de version permet de gérer les modifications et sert aussi de sauvegarde (on a une copie de travail sur chaque poste et une copie sur le serveur).

Le plus utilisé est subversion (cvs est encore beaucoup utilisé mais vieillissant).
On va installer subversion de manière à ce qu'il fonctionne à travers apache. Comme cela on pourra y accéder en utilisant le protocole http.

L'idéal est de posséder un serveur sous linux (on peut utiliser un vieux pc).
Installation sous une distrib Ubuntu :

Installer les paquets nécessaires :
sudo apt-get install apache2 subversion libapache2-svn


sudo vi /etc/apache2/mods-available/dav_svn.conf
<Location /devsvn>
    DAV svn
    SVNPath /var/lib/svn
    AuthType Basic
    AuthName "Depot Subversion"
    AuthUserFile /etc/apache2/dav_svn.passwd
    Require valid-user
</Location>

Redémarrer apache pour prendre en compte le fichier précédent :
sudo /etc/init.d/apache2 restart


Création du repository :
sudo svnadmin create /var/lib/svn
sudo chown -R www-data\: /var/lib/svn

Création d'un accès pour monlogin :
sudo htpasswd -cs /etc/apache2/dav_svn.passwd monlogin
sudo chown www-data:www-data /etc/apache2/dav_svn.passwd

Récupération des sources :
Soit en ligne de commande :
svn checkout http://127.0.0.1/devsvn/monprojet/
ou avec Netbeans et le module Subversion

On peut aussi utiliser tortoisesvn sous windows

mardi 14 octobre 2008, a 10:19
Comment déployer une appli en rails 2.1 sur un serveur en rails 2.0.2
 

Pour pouvoir démarrer votre projet en rails 2.0.2, il faut faire quelques modifications au niveau du source :

- Modifier le fichier config/environment.rb
* Il faut mettre à jour la version de rails :

RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
(il est aussi possible de mettre la ligne en commentaire)
* Mettre en commentaire la ligne concernant le TimeZone :
# config.time_zone = 'UTC'

- Mettre en commentaire toutes les lignes du fichier config/initializers/new_rails_defaults.rb
if defined?(ActiveRecord)
  # Include Active Record class name as root for JSON serialized output.
  # ActiveRecord::Base.include_root_in_json = true

  # Store the full class name (including module namespace) in STI type column.
  # ActiveRecord::Base.store_full_sti_class = true
end

# Use ISO 8601 format for JSON serialized times and dates.
# ActiveSupport.use_standard_json_time_format = true

# Don't escape HTML entities in JSON, leave that for the #json_escape helper.
# if you're including raw json in an HTML page.
# ActiveSupport.escape_html_entities_in_json = false



Référence :
http://www.42.mach7x.com/2008/07/16/developing-in-rails-21-and-deploying-in-rails-202-or-error-undefined-method-time_zone/

lundi 13 octobre 2008, a 14:07
Installation de mongrel
 

Installation de mongrel sur un serveur Linux Ubuntu (Hardy)

Pour éviter d'avoir l'erreur :
ERROR:  Error installing mongrel:
        ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install mongrel mongrel_rails
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
        from extconf.rb:1


sudo apt-get install ruby-dev

Ensuite on installe mongrel :
sudo gem install mongrel mongrel_rails

Pour démarrer le serveur, il faut aller dans le dossier de l'application et taper :
./script/server mongrel

vendredi 10 octobre 2008, a 16:53
Les Recherches
 

Tous les enregistrements par tri croissant
tab = User.find :all, :order=>"name asc"

On peut utiliser les fonctions find_by_xxxxxx pour un enregistrement et find_all_by où xxxxxx correspond au nom du champ de la table :
u = User.find_by_name("DUPONT")
<=>
u = User.find :first, :conditions=>"name = 'DUPONT'"

tab = User.find_all_by_name("DUPONT")
<=>
tab = User.find :all, :conditions=>"name = 'DUPONT'"

on peut conbiner (and seulement fonctionne pour l'instant -> tester pour or)
tab = User.find_all_by_name_and_prenom("DUPONT", "PIERRE")

les recherches sont très lisibles

Tester le résultat d'une recherche :
tab = User.find_all_by_name("DUPONT")
if !tab.empty?
   # find_all retourne un tableau
end

tab = User.find_by_name("DUPONT")
if !tab.nil?
   # find retourne un enregistrement ou null si rien
end


jeudi 09 octobre 2008, a 15:51
Compter les enregistrements d'une table
 

Compter le nb d'enregistrements dans la table
c = User.count
avec critère
c = User.count "name = 'DUPONT'"

mercredi 08 octobre 2008, a 12:02
C'est quoi votre environnement préféré pour développer ?
 

Répondez à ce sondage :

Quel est votre environnement de développement préféré pour Ruby on Rails 
(  polls)

Vous pouvez m'indiquer d'autres choix

mercredi 08 octobre 2008, a 11:26
Problème de création de champ -> ne pas utiliser de champ type
 

Ajouter un champ dans une table via migration
ruby script/generate migration email
rake db/migrate

class Type < ActiveRecord::Migration
  def self.up
    add_column :personnes, :type, :string
  end
end

/!\ ne fonctionnera pas correctement il est préférable d'utiliser :
class Type < ActiveRecord::Migration
  def self.up
    add_column :personnes, :type_personne, :string
  end
end

mercredi 08 octobre 2008, a 11:07
Ma première appli
 

C'est parti.

Comme je l'ai précisé dans l'article "Comment développer ????" ce tuto est basé sur Netbeans :

1 - Création d'un nouveau projet :
     File -> New Project
     et on choisit Ruby -> Ruby on Rails Application
     Next >

     Ensuite on configure la connexion MySql
     il faut sélectionner Specify Database Information Directly


mardi 07 octobre 2008, a 17:35
Comment développer ???? et avec quoi ???
 

Notepad et vi c'est bien sympa mais faut pas exagérer quand même, perso je préfère un bon IDE. J'ai essayé au début Eclipse (RadRails) mais franchement , j'ai pas trouvé ça top. Alors j'ai téléchargé Netbeans. Et là, miracle ! Tout il est bo, bien configuré, rien à faire.
En résumé :
- Télécharger Netbeans sur http://www.netbeans.org/ en sélectionnant la version Ruby.
- Installer un serveur MySql (on peut utiliser xampp)

Pas besoin d'installer Ruby car Netbeans intègre par défaut une implémentation java de ruby : jruby.
Pas besoin non plus d'installer un serveur d'appli car il intègre par défaut Webbrick et glassfish.


Présentation
Bienvenue sur mon blog sur lequel vous trouverez des articles concernant le magnifique framework RoR Ruby on Rails

Envoyer un mail à l'auteur
publicité
commentaire(s)
Bienvenue Paltock (17/12/2008 13:17)

Le 1er Annuaire de B...

Bienvenue olivier (09/12/2008 15:56)

BONJOUR VOUS AVEZ...

Selectionner un enregistrement au hazard Jasperiel (16/10/2008 11:09)

Et bien... en lisant...

Héberger une appli Rails titi53 (14/10/2008 12:58)

Et ovh ??? Quelqu...

Selectionner un enregistrement au hazard manusvs650 (10/10/2008 15:16)

Comment peut-on véri...

Newsletter

Pour vous inscrire à la newsletter de ce blog renseignez votre adresse mail :


mes catégories
Rails (9)
rails (7)
developpement (5)
ruby (4)
ruby on rails (4)
Ruby (3)
administration (2)
javascript (2)
IDE (1)
mongrel (1)
UML (1)
plugin (1)
plugins (1)
Articles précédents
Liste des articles
calendrier
«janvier 2009»
LunMarMerJeuVenSamDim
01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
archives
2009-11 (2)
2009-01 (3)
2008-12 (5)
2008-11 (3)
2008-10 (15)
thèmes
Rails
plugin
Mes blogs Mongenie préférés
Jeu de mots : Dingbats
Mes autres blogs préférés
Jeux.domozone.net
Blog d'un développeur RoR
Blog sur la veille et le marketing.
Google Android Blog
D'autres blogs sur monGenie
Les trésors de Marilyn Monroe
Le blog de Blaise
LE BLOG DE JM
Le brick à vrac
Liberté Egalité Fraternité
Best Of
Rails + UML + StarUML
C'est quoi votre environnement préféré pour développer ?

Visites depuis

Le début du mois : 449

Le mois dernier : 323

L'ouverture du blog : 2512


** ** © Learnorama 2006 - conditions générales - développé par Learnorama et Kernix - Contact - Nouveautés blog