上下文:正在制作一个简单的链接缩短(位)。使用64进制转换,我使用的符号字母表是下面的常量:"abc…abc…012…"89",打乱。
我的问题是:shuffle和join这个外部函数是什么时候运行的?
class LinksController < ApplicationController
# A declared constant outside of any functions which is shuffled and joined
SYMBOLS =
(('a'..'z').to_a + ('A'..'Z').to_a + (0..9).to_a).shuffle.join
end
这是非常简单的测试自己:
puts "A"
class Test
puts "B"
SYMBOLS = 3
puts "C"
end
puts "D"
您将看到它按顺序打印A,B,C,D,正如您所期望的。
类声明中的代码逐行求值,就像其他地方的代码一样。
这里的问题是你的链接在某种程度上依赖于一个随机数组的顺序。每次程序执行时,数组将随机洗牌,如果链接要求数组相同,则每次重新启动进程时,它们都将中断。