gpt4 book ai didi

ruby - 为什么这里使用 force_encoding ("BINARY")?

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:50 25 4
gpt4 key购买 nike

当我们安装 Rails 时,我们得到这个 rails “可执行文件”:

#!/usr/bin/env ruby
#
# 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/ and Gem::Version.correct?($1) then
version = $1
ARGV.shift
end
end

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

我想知道在那个字符串上执行 force_encoding("BINARY") 有什么意义。 force_encoding 是必需的可能值是什么?我认为人们只会在这里使用数字和字母指定版本。

最佳答案

这不是特定于 rails 的东西 - 它是 ruby​​gems 将为 gem 中的任何 ruby​​ 可执行文件生成的包装器。在 6bf71914 中添加了对 force_encoding 的调用

改变的原因是第一个参数可能根本不是一个版本——我们想测试它是否是一个版本,但它可以是任何东西,我们不希望正则表达式检查失败。例如,某些可执行文件接受文件名列表作为参数,而这些文件名在 ruby​​ 使用的默认外部编码中可能无效。

关于 issue 的讨论有点多这促使了这一变化。

关于ruby - 为什么这里使用 force_encoding ("BINARY")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29787336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com