什么时候Ruby变量声明+代码(在rails上)外部函数在控制器内运行



上下文:正在制作一个简单的链接缩短(位)。使用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,正如您所期望的。

类声明中的代码逐行求值,就像其他地方的代码一样。

这里的问题是你的链接在某种程度上依赖于一个随机数组的顺序。每次程序执行时,数组将随机洗牌,如果链接要求数组相同,则每次重新启动进程时,它们都将中断。

最新更新