L'équipe derrière Devise a annoncé via blogpost http://blog.plataformatec.com.br/2013/05/devise-and-Rails-4/ qu'elle publiait une version compatible avec Rails 4, en l'appelant '3.0 rc'. Dans le même article de blog, il a également déclaré qu'il publie Devise 2.2.4.
J'essaie de créer une application Rails 4. quand j'ai fait gem install Devise
, il a installé 2.2.4, pas la version compatible avec Rails 4.
Fetching: devise-2.2.4.gem (100%)
Ce que je suppose des commentaires dans le blog sur les paramètres forts ne sera pas compatible avec Rails 4.
J'ai regardé la page github de Devise mais je ne sais pas comment installer la version compatible avec Rails 4. Pouvez-vous m'aider?
https://github.com/plataformatec/devise
Remarque, j'ai essayé
gem install devise --version 3.0.0.rc1
mais ça disait
ERROR: Could not find a valid gem 'devise' (= 3.0.0.rc1) in any repository
ERROR: Possible alternatives: devise
Devise est maintenant compatible avec Rails 4 hors de la boîte au moment de cette réponse.
Notre objectif final est de permettre aux utilisateurs de s'inscrire, de se connecter et de se déconnecter du site Web. Nous allons également créer une petite vue partielle nous indiquant si nous sommes connectés ou déconnectés.
Ouvrez votre Gemfile
et installez la gemme Devise.
gem 'devise'
Ensuite, dans votre terminal, exécutez le bundle install
commande pour installer la gemme.
$ bundle install
Exécutez cette commande depuis votre terminal:
Rails generate devise:install
Ce générateur installe l'initialiseur qui configure tous les paramètres disponibles de Devise.
Ensuite, nous devons générer notre modèle d'utilisateur. Je vais le nommer User
mais vous pouvez le nommer comme bon vous semble, il suffit de remplacer User
par Whatever
.
Rails generate devise User
rake db:migrate
À l'intérieur de config/environments/development.rb
, définissez l'URL par défaut d'Action Mailer sur localhost:
config.action_mailer.default_url_options = { :Host => 'localhost:3000' }
Vous devez vous assurer que routes.rb
a une route racine par défaut - si vous n'en avez pas, définissez-la!
root to: 'home#index'
À l'intérieur de votre views/layouts
dossier créer un fichier nommé _user_widget.html.erb
et copiez ce code dans:
<% if user_signed_in? %>
<p>Welcome <%= current_user.email %></p>
<%= link_to 'Logged In [click to logout]', destroy_user_session_path, :method => :delete %>
<% else %>
<p>You are not signed in.</p>
<%= link_to 'Login', new_user_session_path %>
<% end %>
Et invoquez-le dans votre mise en page (views/layouts/application.html.erb
):
<!DOCTYPE html>
<html>
<head>
<title>FacebookAuthTest</title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
<%= yield %>
<%= render 'layouts/user_widget' %>
</body>
</html>
Assurez-vous d'arrêter et de redémarrer le serveur sinon vous trouverez toutes sortes de bugs désagréables! Il est toujours préférable de redémarrer votre serveur local lorsque vous mettez à jour votre gemfile ou changez quoi que ce soit dans le fichier de configuration de l'environnement.
Avec tout cela en place, vous devriez pouvoir vous inscrire, vous connecter et vous déconnecter de votre propre site Web Rails.
Si vous avez des questions, n'hésitez pas à laisser un commentaire ci-dessous et je vais essayer de vous aider.
MISE À JOUR 17 SEPTEMBRE 2013 : La branche principale est maintenant compatible avec Rails 4. Pas besoin de chercher une autre version .
En regardant le github repo , on dirait que vous voulez la version 3.0.0.rc
(n ° 1). Vous voudrez donc
gem install devise --version "3.0.0.rc"
ou, dans votre gemfile:
gem 'devise', '3.0.0.rc'
Cela l'a installé
gem install devise --pre
ou
devise-3.0.0.rc.gem
À ce stade, cette version du joyau est ce que vous souhaitez utiliser
gem 'devise', '3.0.0'
Maintenant que la version 3.0 est stable, vous pouvez simplement faire:
gem install devise
ou dans votre Gemfile:
gem 'devise'
bijou 'devise', github: 'plataformatec/devise', branche: 'Rails4'