https://github.com/chloerei/active_service
在 Gemfile 中添加:
gem 'active_service', github: 'chloerei/active_service'
然后运行:
bundle
定义一个 service:
class HelloService < ActiveService::Base
def initialize(name)
@name = name
end
def say_hello
"Hello #{@name}!"
end
end
生成实例:
hello_service = HelloService.new('David')
执行 Service 方法:
hello_service.say_hello
# => 'Hello David!'
如果你在 Rails 中使用,那么可以使用 Rails 的生成器:
rails g service hello
这会生成模版文件,放在 app/services
和 test/services
。
因为 active_service 这个 gem 名已经被占用了,所以暂时没有 push 到 rubygems 上。如果大家喜欢,欢迎在 github 点 star,如果人数多了我去联系那个作者能不能把名字让给我。(没准 DHH 会把它纳入 Rails 5.0 呢!)