我正在构建我自己的类,它位于/ lib文件夹中并使用rails console进行调试。我很快遇到了一个问题,我必须重新加载!每当我修改我的类文件时我的控制台。想知道如何在文件更改时自动重新加载。
以下是我的配置:
班级位置
/lib/book.rb
代码
class Book
def hello
puts 'hello'
end
end
配置/ application.rb中
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
控制台
rails c
Book.new.hello
答案 0 :(得分:1)
我认为guard
不会这样做,但我可能错了。我的解决方案,因为今天出现了很多问题,就是在我的.irbrc文件中添加load_lib
函数:
(请注意,这是Rails特定的,也许有人对此提出了建议)
def load_lib
path = File.join( Rails.root, 'lib')
failures = []
Dir.glob("#{path}/**/*.rb").each { |file|
puts "loading: #{file} ... "
begin
load file
rescue => ex
failures << file
end
}
# this second pass is here to try to catch anything that
# is dependent on something else
# could be improved, but is working fine for my needs
double_failures = []
for file in failures
begin
load file
rescue => ex1
double_failures << file
end
end
if double_failures.size > 0
puts "these files failed twice"
for file in double_failures
puts file
end
end
end
在Rails控制台中我只需要运行load_lib
并加载我的库代码。这是一种蛮力,可能并不完美,但它满足了我的需求。它也没有回答你的问题,但它足够接近?
答案 1 :(得分:0)
我认为你能得到的最接近的是guard gem。当它看到它们发生变化时,它会监视你的文件并运行命令。这是对rails工作流程的一个很好的补充。
这是一个导弹episode以获取更多信息。
编辑:
这是我刚发现的东西 - keep your irb history的一种方式。我从来没有尝试过,但听起来它也适用于rails控制台。使用reload!
并且能够保留irb历史记录,现在重新加载控制台应该会更方便。