0

我是编程新手,并试图将 embedly-ruby 安装到我的社交书签应用程序中以显示书签预览列表。我已经阅读并观看了我在 embedly 和 embedly-ruby 上可以找到的所有内容,并且需要对安装过程进行一些说明。这是我从研究中了解到的。如果我错了,请纠正我:

第 1 步:添加gem 'embedly'到 Gemfile

第 2 步:在终端中运行 bundle ......或者我只是gem install embedly在终端中执行而不添加gem 'embedly'到我的 Gemfile 中?

第 3 步:像这样将要求行添加到 application.js 文件中(我应该担心这里的顺序吗?)

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require_tree .
//= require 'embedly'
//= require 'json'

我不确定在此之后如何进行。所以这是我的问题:

问题1:这个代码是做什么用的?它去哪儿了?

embedly_api =
Embedly::API.new :user_agent => 'Mozilla/5.0 (compatible; mytestapp/1.0; my@email.com)'

问题2:我把这段代码放在哪里?

# single url
obj = embedly_api.oembed :url => “http://#{bookmark.url}”
puts obj[0].marshal_dump
json_obj = JSON.pretty_generate(obj[0].marshal_dump)
puts json_obj

问题 3:由于我试图从数据库中提取几个用户书签并使用 embedly 将它们显示在网站上,因此上述代码中的这一行理论上是否有效?

obj = embedly_api.oembed :url => “http://#{bookmark.url}”

提前感谢您的洞察力!

4

2 回答 2

1

警告——我没有亲自使用过你正在使用的宝石。以下建议基于查看他们的文档。

  1. 添加embedly到您的 Gemfile

  2. 不要在命令行中添加它将其添加到 Gemfile 会将其安装在您的应用程序范围内。(gem 指令与框架无关,这就是为什么它们不在 Gemfile 中显示它的原因)。

  3. 我不确定这个 gem 是否包含您需要的 JS 文件。假设以某种方式安装该 gem确实添加了一个 JS 文件,那 require 对我来说看起来不错(尽管我忘记了你的最后两个 require 是字符串是否是一个问题,并且根据我的经验,放置require_tree .最后一个是常规的,以便你的应用程序- 特定的 JS 文件可以访问所有库)。如果有的话,它可能唯一重要的是它遵循这jquery条线,因为 Embedly 的 JS可能依赖于一些 jQuery,这是一个非常常见的库。

以下行生成gem 给出的类的实例:Embedly::API

embedly_api = Embedly::API.new :user_agent => 'Mozilla/5.0 (compatible; mytestapp/1.0; my@email.com)'

该实例有一个oembed方法,可以用一个:url键输入一个哈希值,它可以使用它的值来生成可以打印到页面的 HTML。因此,例如,在定义了上述embedly_api实例之后,您可以像这样使用它:

embedly_api.oembed(url: "someurl.com")

或者

embedly_api.oembed(url: ["someurl.com", "anotherurl.com"])

文档建议您可以设置url为等于字符串或字符串数​​组。

这个方法返回一个基于 url 的对象数组,每个对象都有一些相关的方法,包括html,它似乎打印出 iFrame 的 HTML,以及thumbnail,它似乎打印出链接的缩略图。

你可以在 Rails 控制台中试试这个:

[1] ruby> embedly_api = Embedly::API.new :user_agent => 'Mozilla/5.0 (compatible; mytestapp/1.0; my@email.com)'
=> #<Embedly::API:0x00000102282e88
 @api_version={:objectify=>"2"},
 @endpoints=[:oembed, :objectify, :preview, :extract],
 @headers={"User-Agent"=>"Mozilla/5.0 (compatible; mytestapp/1.0; my@email.com)"},
 @hostname="http://api.embed.ly",
 @key=nil,
 @proxy=nil,
 @secret=nil,
 @timeout=180>
[2] ruby> embedly_api.oembed :url => 'http://www.youtube.com/watch?v=sPbJ4Z5D-n4&feature=topvideos'
=> [#<Embedly::EmbedlyObject provider_url="http://www.youtube.com/", description="Netherlands - Austria [09-02-2011] 1-0 WESLEY SNEIJDER", title="Netherlands - Austria [09-02-2011] 1-0 WESLEY SNEIJDER", url="http://www.youtube.com/watch?v=sPbJ4Z5D-n4", author_name="TranceAddict1989", height=480, thumbnail_width=480, width=854, html="<iframe class=\"embedly-embed\" src=\"//cdn.embedly.com/widgets/media.html?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DsPbJ4Z5D-n4&src=http%3A%2F%2Fwww.youtube.com%2Fembed%2FsPbJ4Z5D-n4%3Ffeature%3Doembed&image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FsPbJ4Z5D-n4%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube\" width=\"854\" height=\"480\" scrolling=\"no\" frameborder=\"0\" allowfullscreen></iframe>", author_url="http://www.youtube.com/user/TranceAddict1989", version="1.0", provider_name="YouTube", thumbnail_url="http://i.ytimg.com/vi/sPbJ4Z5D-n4/hqdefault.jpg", type="video", thumbnail_height=360>]

然后,您可以通过在控制器中定义来尝试在您的应用程序embedly_api中使用它,并使用它从您的书签中生成与 url 相关的 iFrame/thumbnail HTML 字符串数组。将该数组设置为@变量并循环遍历这些 iFrame/缩略图字符串并将它们作为 HTML 打印到页面上。

完成此操作后,您应该更好地了解 gem 到底在为您做什么,以及您可能希望如何自定义其行为。

于 2014-09-16T22:18:04.347 回答
0

使用 embedly-ruby 库仍然需要您进行大量的显示工作。您可能需要考虑尝试一个客户端库,例如http://embed.ly/cards,它是完全免费的。

于 2015-01-12T17:21:28.983 回答