运行 bin/console returns “: 没有那个文件或目录”
Running bin/console returns ": No such file or directory"
我在捆绑器 1.7 上使用 "bundle gem gem_name" 构建了一个 gem。我现在正在使用捆绑器 1.9.4。我使用 1.9.4 创建了一个新的 gem,我注意到 gem 模板发生了一些变化。我决定回到旧的 1.7 gem 并将其升级到新格式;当 运行 使用新的 bin/console
命令时,我 运行 遇到错误。
我已将 .gemspec 文件更新为:
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'basic/version'
Gem::Specification.new do |spec|
...other settings here...
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
# delete this section to allow pushing this gem to any host.
if spec.respond_to?(:metadata)
spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
else
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
end
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.9"
spec.add_development_dependency "rake", "~> 10.0"
end
我还创建了 bin/console
文件。
当我从命令行 运行 bin/console
时,出现以下错误
: No such file or directory
当我 运行 bin/console 在使用 bundler 1.9.4 生成的 gem 中时,一切正常。我错过了什么?
想通了。我在 Windows 上用 Sublime Text 创建了 bin/console 文件。这导致 Windows 行结尾被添加到文件中,这使得文件在 Linux 时无法执行。以下是我为解决问题所做的工作:
我在 Vim 中打开了 bin/console 以确保文件以 Unix 行结尾保存:
vi bin/console
然后输入
:set fileformat=unix
按return。 Vim 可能不会显示任何内容(即 :set fileformat=unix"
可能仍会出现在该行上)
接下来输入以下内容保存并关闭文件:
:wq!
现在 bin/console 应该可以了。
我还更改了 Sublime Text 以强制它默认使用 Unix 行结尾。单击 Preferences/Settings-User
菜单选项。添加以下设置:
{
"default_line_ending": "unix",
}
您可以在进行上述更改后通过 Sublime Text 打开和保存文件(如果您使用该编辑器),而不是通过 Vim.
我在捆绑器 1.7 上使用 "bundle gem gem_name" 构建了一个 gem。我现在正在使用捆绑器 1.9.4。我使用 1.9.4 创建了一个新的 gem,我注意到 gem 模板发生了一些变化。我决定回到旧的 1.7 gem 并将其升级到新格式;当 运行 使用新的 bin/console
命令时,我 运行 遇到错误。
我已将 .gemspec 文件更新为:
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'basic/version'
Gem::Specification.new do |spec|
...other settings here...
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
# delete this section to allow pushing this gem to any host.
if spec.respond_to?(:metadata)
spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
else
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
end
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.9"
spec.add_development_dependency "rake", "~> 10.0"
end
我还创建了 bin/console
文件。
当我从命令行 运行 bin/console
时,出现以下错误
: No such file or directory
当我 运行 bin/console 在使用 bundler 1.9.4 生成的 gem 中时,一切正常。我错过了什么?
想通了。我在 Windows 上用 Sublime Text 创建了 bin/console 文件。这导致 Windows 行结尾被添加到文件中,这使得文件在 Linux 时无法执行。以下是我为解决问题所做的工作:
我在 Vim 中打开了 bin/console 以确保文件以 Unix 行结尾保存:
vi bin/console
然后输入
:set fileformat=unix
按return。 Vim 可能不会显示任何内容(即 :set fileformat=unix"
可能仍会出现在该行上)
接下来输入以下内容保存并关闭文件:
:wq!
现在 bin/console 应该可以了。
我还更改了 Sublime Text 以强制它默认使用 Unix 行结尾。单击 Preferences/Settings-User
菜单选项。添加以下设置:
{
"default_line_ending": "unix",
}
您可以在进行上述更改后通过 Sublime Text 打开和保存文件(如果您使用该编辑器),而不是通过 Vim.