2015-11-11 16 views

回答

4

我对这个任务

#lib/initializer_helpers.rb 
module InitializerHelpers 

    def self.skip_console_rake_generators &block 
    skip(defined?(Rails::Console) || defined?(Rails::Generators) || File.basename($0) == "rake", &block) 
    end 

    def self.skip_rake_generators &block 
    skip(defined?(Rails::Generators) || File.basename($0) == "rake", &block) 
    end 

    def self.skip_generators &block 
    skip(defined?(Rails::Generators), &block) 
    end 

    def self.skip_console &block 
    skip(defined?(Rails::Console), &block) 
    end 

    private 

    def self.skip(condition, &block) 
    raise ArgumentError.new("no block given") if block.blank? 
    unless condition 
     yield 
    end 
    end 

end 

# use it 
InitializerHelpers.skip_console do 
    # not executed in console 
end 

更新特殊助手:如果你只是提取这个想法宝石https://github.com/olegantonyan/initializer_helpers

1

你可以检查Rails的控制台定义:

run_code unless defined?(Rails::Console) 
2

需要检查服务器是否在运行,您可以使用这一个

if defined?(Rails::Server) 
    # do something usefull 
end