Rails App Movies API - Heroku

时间:2013-06-21 16:50:38

标签: ruby-on-rails database api postgresql heroku

我有一个Rails电影应用程序,可能会使用其他网站的API来填充我的数据库。

我正在使用TMDB.org API(我已经有一个API密钥)来提取,现在让我们说 标题 描述 的电影。

如何从tmdb网站中提取信息到我的网站,并在<% @movie.title %><% @movie.description %>中显示信息 所需信息需要使用 Heroku 放在我的 PostgreSQL 数据库中 这就是一个问题

另一个问题是,如果不为TMDB数据库中的每部电影运行方法,我将如何做到这一点

例如,使用Ruby-TMDB Gem,而不是运行

TmdbMovie.find(:title => "The Social Network", :limit => 10, :expand_results => true, :language => "en")

TmdbMovie.find(:title => "The Dark Knight Rises ", :limit => 10, :expand_results => true, :language => "en")

对于我想要在我的数据库中的每部电影(这是TMDB数据库中的每部电影),我会跑到GET所有电影。

然后在我的电影:show 页面

中显示它们

总而言之,如何从TMDB.org获取数据库信息到我的rails应用程序,并将TMDB Movie :show 页面中的信息显示到我的电影:show 页面,使用Ruby-TMDB Gem IN Heroku?是否会有一个佣金任务,如果是这样的话会是什么?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您希望解决2个问题。

我应该在我的rails应用中如何以及在何处提取数据?

是的,这可以用耙子来完成。添加新的rake文件lib/tasks/tmdb.rake

namespace :db do
  task :pull_tmdb_data => :environment do

    Tmdb.api_key = "t478f8de5776c799de5a"
    # setup your default language
    Tmdb.default_language = "en"

    # find movies by id
    @movie = TmdbMovie.find(id: 123)
    Movie.create title: @movie.title, description: @movie.description

    # find movies in groups
    @movies = TmdbMovie.find(:title => 'Iron Man')
    @movies.each do |movie|
        Movie.create title: movie.title, description: movie.description
    end

  end
end

现在每次想要使用tmdb填充数据库时,只需运行rake db:pull_tmdb_data

从tmdb中提取所有电影有哪些必要的查询?

通过浏览他们的api没有复制数据库的快捷方式,如果你想复制它,你最好的选择可能是直接联系他们。你可以通过尝试每一个可能的电影ID来强制它,但要注意它们会扼杀你。以下是他们网站的引用。

我们强制执行少量限速。请注意,如果超过这些限制,您将收到503错误。

  • 每个IP每30秒请求
  • 同时最多20个 连接

如果你真的需要复制tmdb,可能值得考虑。当tmdb添加新电影并修复其数据中的错误时,您的数据库将会过时,因此您将面临一系列难以解决的数据完整性问题。