ruby-on-rails – “$bin / rails”中的“bin”是什么意思?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – “$bin / rails”中的“bin”是什么意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试按照“入门引擎”Rails指南的教程进行操作,并发现:
$bin/rails plugin new blorgh --mountable

当我在终端上输入时,我得到:

bash: bin/rails: No such file or directory

当我尝试$rails它可以正常工作.

我一直在使用命令行几个月,还有Rails.我知道$符号,但我对此之后“bin”的含义感到困惑.我习惯在$之后输入“Rails”,但本教程说使用“bin”…

bin /是什么意思?

解决方法

TL;博士

运行bundle install –binstubs,它会工作.你只需要做一次,Bundler会记住你要求它(对于那个项目).

更长的答案

当您使用bundle -binstubs安装bundle时,Bundler会将所有特定于bundle的binstub安装到bin /子目录(相对于Gemfile),而不是将它们放入gemset的全局binstub路径中.

您通常会这样做:

>确保您正在运行的rails binstub是Gemfile中的那个(而不是以后与Bundler分开安装到gemset中的不同版本),以及
>改进执行时间(因为它在功能上等同于捆绑exec rails除了减去一个子进程调用之外).

全局binstubs与Bundler binstubs

如果你键入哪个rails,你会得到一个很长的路径,比如/usr/local/rvm/gems/jruby-1.7.18/bin/rails,其中的内容是:cat` which rails`

#!/usr/bin/env jruby_executable_hooks
#
# This file was generated by RubyGems.
#
# The application 'railties' is installed as part of a gem,and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/
    version = $1
    ARGV.shift
  end
end

gem 'railties',version
load Gem.bin_path('railties','rails',version)

运行bundler –binstubs之后,如果你使用bin / rails,你会得到类似的东西:

#!/usr/bin/env jruby
#
# This file was generated by Bundler.
#
# The application 'rails' is installed as part of a gem,and
# this file is here to facilitate running it.
#

require 'pathname'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",Pathname.new(__FILE__).realpath)

require 'rubygems'
require 'bundler/setup'

load Gem.bin_path('railties','rails')

关键的区别在于bin / version设置了BUNDLE_GEMFILE环境变量,它需要bundler / setup,这就是告诉Bundler用gem路径做的事情. bin / rails脚本具有捆绑器感知功能,并且可以识别您的Gemfile,因此它可以立即为您的环境做好准备.

我通常建议在gemset版本上使用–binstubs和bin / x调用.

原文链接:https://www.f2er.com/ruby/265103.html

猜你在找的Ruby相关文章