如何安装嵌入式ruby



我是编程新手,尝试将嵌入式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}”

提前感谢您的真知灼见!

注意——我还没有亲自使用过你正在使用的宝石。以下建议是根据他们的文档提出的。

  1. embedly添加到您的Gemfile

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

  3. 我不确定这个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的对象,每个对象都有一些相关的方法,包括htmlthumbnail,前者似乎打印出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,这是完全免费的。

最新更新