我是编程新手,尝试将嵌入式ruby安装到我的社交书签应用程序中,以显示书签预览列表。我已经阅读并观看了我在嵌入式和嵌入式ruby上能找到的一切,需要对安装过程进行一些澄清。这是我从研究中了解到的。如果我错了,请纠正我:
步骤1:将gem 'embedly'
添加到Gemfile
步骤2:在终端中运行捆绑包。。。。还是我只在终端中执行gem install embedly
而不将gem 'embedly'
添加到我的Gemfile?
步骤3:像这样将require行添加到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:既然我正试图从数据库中提取几个用户书签,并将它们嵌入到网站上显示,那么上面代码中的这一行理论上可行吗?
obj = embedly_api.oembed :url => “http://#{bookmark.url}”
提前感谢您的真知灼见!
注意——我还没有亲自使用过你正在使用的宝石。以下建议是根据他们的文档提出的。
-
将
embedly
添加到您的Gemfile -
不要在命令行中添加它。将其添加到Gemfile会将其安装在您的应用程序范围内。(gem指令与框架无关,这就是为什么它们不在Gemfile中显示它的原因)。
-
我不确定这个gem是否包含您需要的JS文件。假设以某种方式安装该gem确实添加了一个JS文件,那么这个需求在我看来是可以的(尽管我忘记了如果有问题的话,你的最后两个需求是字符串,根据我的经验,把
require_tree .
放在最后是传统的,这样你的应用程序特定的JS文件就可以访问所有库)。如果有什么不同的话,那么它遵循jquery
行可能是唯一重要的,因为Embeddy的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
和thumbnail
,前者似乎打印出iFrame的HTML,后者似乎打印出链接的缩略图。
您可以在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/缩略图HTML字符串。将该数组设置为@
变量,并循环使用这些iFrame/缩略图字符串,并将它们作为HTML打印到页面中。
一旦你做到了这一点,你就应该更好地了解gem到底在为你做什么,以及你可能想要如何自定义它的行为。
使用嵌入式ruby库仍然需要大量的显示工作。您可能需要考虑尝试客户端库,如http://embed.ly/cards,这是完全免费的。