「Ruby/rails/autoload」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→追加したautoloadの確認) |
(→呼び出しサンプル) |
||
行24: | 行24: | ||
class TestController < ApplicationController | class TestController < ApplicationController | ||
def hello | def hello | ||
− | test_service = TestService.new(" | + | test_service = TestService.new("test1") |
require 'logger' | require 'logger' | ||
log = Logger.new('/tmp/log') | log = Logger.new('/tmp/log') | ||
− | log.debug(test_service.exec()) # | + | log.debug(test_service.exec()) # test1 |
end | end | ||
end | end | ||
行34: | 行34: | ||
class TestService | class TestService | ||
def initialize(name) | def initialize(name) | ||
+ | @name = name | ||
end | end | ||
def exec() | def exec() | ||
− | return | + | return @name |
end | end | ||
end | end |
2017年11月8日 (水) 03:49時点における版
autoloadを使うための準備
config/application.rb
module Helloworld class Application < Rails::Application config.autoload_paths += %W(#{config.root}/lib) # これを追加 end end
rails5以降productionではエラーとなる
以下もapplication.rbに追加
config.paths.add 'lib', eager_load: true
rails5ではあまりautoloadは推奨ではない。
参考:https://qiita.com/K_Yagi/items/edc46fd976526279312b
追加したautoloadの確認
bin/rails r 'puts ActiveSupport::Dependencies.autoload_paths' /helloworld/lib
呼び出しサンプル
app/controller/test_controller.rb
class TestController < ApplicationController def hello test_service = TestService.new("test1") require 'logger' log = Logger.new('/tmp/log') log.debug(test_service.exec()) # test1 end end
helloworld/lib/test_service.rb
class TestService def initialize(name) @name = name end def exec() return @name end end