我目前正在使用Ruby编写一个应用程序,它对Soundcloud的API执行一些简单的外部API调用。
我在单个.rb文件中开发了一堆代码,并希望将其放入rails架构中。这个Ruby文件包含以下类:
class SoundcloudUser
class SoundcloudQuery
class SoundcloudFollowers
目前我了解我可以将这些类放入单独的.rb文件中,然后将它们放入/ models /文件夹中,然后让我能够从rails应用程序的其他地方调用这些类(使用require / include )。
我的问题很简单,这是正确的方法吗?我熟悉rails,但我不熟悉将Ruby开发的项目转换为rails格式。我尝试在Ruby样式指南中搜索最佳实践但我没有找到任何东西。
旁注 - 我还想创建另一个充当?服务的类?其中,检查我的本地数据库是否数据库中已存在条目,如果没有,则查询新数据。我在这里的问题是类似的 - 这个'服务'的.rb文件会在哪里生效?
我希望我能够清楚地解释我的问题,如果没有,我很乐意补充一些说明。谢谢你的时间!
答案 0 :(得分:4)
如果在Rails中,您可以将它们放在lib/
或主app
目录中的某个位置。例如,您可以创建app/services
并将其放在那里,当您重新启动Rails服务器时,您应该可以致电SoundcloudUser
(前提是您将其命名为app/services/soundcloud_user.rb
。
我总是看一下Gitlab的源代码。这是一个巨大的Rails应用程序,但请查看此文件:https://github.com/gitlabhq/gitlabhq/blob/master/app/services/gravatar_service.rb。因为它位于app/services
(实际上是任何名称)中,所以可以从Rails中的任何位置调用GravatarService
。如果您想要一些命名空间,则必须将其放在app/services/soundcloud/user.rb
或lib/soundcloud/user.rb
中,并将该课程命名为Soundcloud::User
。
对于充当服务的类,似乎它协调了“检查if(song?)是否存在的逻辑,否则刮掉。有些人把它放在模型类中,我可能会把它放在服务中a a Gitlab源代码。希望我帮助过。