首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >下载和存储数据的代码放在哪里?

下载和存储数据的代码放在哪里?
EN

Stack Overflow用户
提问于 2016-09-02 02:29:43
回答 1查看 38关注 0票数 0

我是Rails的新手,对于如何组织我的代码有一个问题。我读过关于胖模型和瘦控制器的文章,这很有意义(在理论上?)。

我现在想做的是:定期(通过Cron和Rails运行器)从Internet下载一些数据,并将其中的一部分存储在数据库中。我不明白的是在哪里放置代码,这与我从中获取数据的API对话。我是不是把它放到模型中,让它看起来像这样:

代码语言:javascript
运行
复制
API data
    '--> Model --> Database

另一种情况是,下载的数据必须拆分并存储在两个不同的模型/数据库表中?选择哪个版本?

版本1:

代码语言:javascript
运行
复制
API data
    '--> Model --> Database
            '--> Model --> Database

版本2:

代码语言:javascript
运行
复制
API data
    '--> Controller
            |--> Model --> Database
            '--> Model --> Database

感谢您的帮助!:)

EN

回答 1

Stack Overflow用户

发布于 2016-09-02 02:51:03

正如@agmcleod建议的那样,你应该使用raketask,你可以用rake task_name运行它,然后添加cron作业

从以下内容开始:

rails g task api_service fetch_data_for_model1 fetch_data_for_model2

现在打开lib/tasks/api_service.rake

代码语言:javascript
运行
复制
namespace :api_servicedo
  desc "Update database with new Movies"
  task :fetch_data_for_model1=> :environment do
     puts 'start fetching data'
     API.new(credentials).fetch_movies.each do |movie|
        puts "creating movie id =#{movie.id}"
        Movie.find_or_create_by(movie.attributes)
     emd
     puts 'Finisheed!'
  end

  desc "TODO"
  task :fetch_data_for_model2=> :environment do
     ....
  end

end

现在打开

crontab -e

并为其提供rake任务路径

代码语言:javascript
运行
复制
00 00 * * * cd /Users/you/projects/myrailsapp && /usr/local/bin/rake RAILS_ENV=production api_service:fetch_data_for_model1

您可以考虑使用https://github.com/javan/whenever,它为编写和部署cron作业提供了清晰的语法。

无论何时,您都可以使用这样的定义来创建schedule.rb文件

代码语言:javascript
运行
复制
every 1.day, :at => '4:30 am' do
    rake 'api_service:fetch_data_for_model1'
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39278578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档