instance method
gem
Ruby on Rails 8.0.4
Since v3.0.20Signature
gem(*args)
Adds a gem declaration to the Gemfile for the specified gem.
gem "rspec", group: :test gem "technoweenie-restful-authentication", lib: "restful-authentication", source: "http://gems.github.com/" gem "rails", "3.0", git: "https://github.com/rails/rails" gem "RedCloth", ">= 4.1.0", "< 4.2.0" gem "rspec", comment: "Put this comment above the gem declaration"
Note that this method only adds the gem to the Gemfile; it does not install the gem.
Options
:version-
The version constraints for the gem, specified as a string or an array of strings:
gem "my_gem", version: "~> 1.1" gem "my_gem", version: [">= 1.1", "< 2.0"]
Alternatively, can be specified as one or more arguments following the gem name:
gem "my_gem", ">= 1.1", "< 2.0"
:comment-
Outputs a comment above the
gemdeclaration in theGemfile.gem "my_gem", comment: "First line.\nSecond line."
Outputs:
# First line. # Second line. gem "my_gem"
:group-
The gem group in the
Gemfilethat the gem belongs to. :git-
The URL of the git repository for the gem.
Any additional options passed to this method will be appended to the gem declaration in the Gemfile. For example:
gem "my_gem", comment: "Edge my_gem", git: "https://example.com/my_gem.git", branch: "master"
Outputs:
# Edge my_gem gem "my_gem", git: "https://example.com/my_gem.git", branch: "master"
Parameters
-
argsrest
Source
# File railties/lib/rails/generators/actions.rb, line 67
def gem(*args)
options = args.extract_options!
name, *versions = args
# Set the message to be shown in logs. Uses the git repo if one is given,
# otherwise use name (version).
parts, message = [ quote(name) ], name.dup
# Output a comment above the gem declaration.
comment = options.delete(:comment)
if versions = versions.any? ? versions : options.delete(:version)
_versions = Array(versions)
_versions.each do |version|
parts << quote(version)
end
message << " (#{_versions.join(", ")})"
end
message = options[:git] if options[:git]
log :gemfile, message
parts << quote(options) unless options.empty?
in_root do
str = []
if comment
comment.each_line do |comment_line|
str << indentation
str << "# #{comment_line}"
end
str << "\n"
end
str << indentation
str << "gem #{parts.join(", ")}"
append_file_with_newline "Gemfile", str.join, verbose: false
end
end
Defined in railties/lib/rails/generators/actions.rb line 67
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in Rails::Generators::Actions