我有这么一个类 写在 bill_test.rb 里面
class BillTest def check puts "Ass We Can" end end
我要把 bill_test.rb 放在 Rails 的哪里 怎么做才能调用用到 BillTest 类 怎样才能成功调用到里面的 check 方法
放到 config/initialize 文件夹,即可
initializer 里的在 reload 的时候不会 reload,放 lib 或者 model
噫,是 re 厨(呕
#1 楼 @jiyuhang110 谢谢 #2 楼 @mizuhashi 同时还要这样子 require 'bill_test' 就能调用了 感谢楼上两位 ♂赞美之心♂
#3 楼 @pp158825968 放到 lib 里,然后在 config/application.rb 下将 lib 文件夹加到 rails 的加载路径中:
# config/application.rb module YourAppName class Application < Rails::Application # 将lib文件夹加到rails的加载路径中 config.autoload_paths << Rails.root.join('lib') end end
这样的话不需要执行require 'bill_test'也能直接使用了
require 'bill_test'
自定义类放到 lib 里,创建一个 config/initializers/require.rb,加载指定内容。 共用 类/module 放到 concerns 里,不用加载。 models 里只写数据库操作相关,逻辑包装都放到 lib 中。
可以放到 app/model/concerns/目录下或者 app/controller/concerns/目录下,然后在 model 或者 controller 里面 include 调用,这两个目录是自动加载的
数据类放到 models 里,封装的功能模块类放到 lib 下。
同意上面的解决方案,但是通常我自己遇到自定义类的情况: 放到 models 里边儿的自定义文件 xxx 下 application.rb 这样改加一个 autoload
config.autoload_paths += %W(#{config.root}/app/models/xxx)
然后就可以实例一个对象,调用 check 方法了
BillTest.new.check