2017-09-12 1 views
0

Je suis nouveau à ruby ​​sur rails, je viens d'installer ma première application.Comment utiliser une gemme créée pour une version de rails spécifique?

J'ai créé une gemme pour une version de rails spécifique (pas pour un projet spécifique) - y at-il une différence?

$ rvm gemset create rails500 
    Gemset 'rails500' created. 

$ rvm [email protected] 
$ gem install rails -v 5.0.0 

Alors je voulais utiliser le gemset pour créer une nouvelle application:

$ mkdir blog-app 
$ cd blog-app 
$ rvm gemset use rails500 
    Using ruby-2.4.1 with gemset rails500 
$ rails new . 

Cela n'a pas créé le .ruby-gemset ou d'un fichier .ruby version pour moi, mais il l'a fait créer la Gemfile avec rails 5.0.0. Alors j'ai créé le .ruby-gemset & fichier version .ruby:

$ echo "ruby-2.4.1" > .ruby-version 
$ echo "rails500" > .ruby-gemset 

J'essaie de savoir si je l'ai fait correctement. Aussi, ai-je besoin du fichier .ruby-gemset si rails5.0.0 est listé dans le Gemfile?

Enfin, je rvm et bundler. Aurais-je dû exécuter bundler installer?

Répondre

0

.ruby-gemset et .ruby-version ne sont pas créés automatiquement par le générateur de rails 5.0.0. Ce que tu fais a l'air OK.

.ruby-version Spécifie la version de ruby ​​que vous souhaitez utiliser. Vous pouvez l'utiliser avec rvm, rbenv ou chruby pour spécifier la version de Ruby que vous souhaitez utiliser dans votre application.

.ruby-gemset est spécifique à l'utilisation de rvm. C'est une alternative à l'utilisation bundler. Les deux bundler et RVM gemsets accomplissent l'objectif de maintenir une liste indépendante des dépendances d'application («gems») séparées des gemmes de système. Avant bundler et RVM gemsets, Ruby n'avait pas une bonne solution pour avoir des dépendances séparées par projet.

N'utilisez pas rvm gemsets et bundler de manière interchangeable. Je recommande d'être totalement à l'aise en utilisant l'un ou l'autre, mais pas les deux sur le même projet. (Je dois noter que je ne connais pas très bien le gemsets, alors certaines de mes informations peuvent être obsolètes, j'espère que quelqu'un me corrigera si ce que j'ai dit est inexact.)