【发布时间】:2014-01-12 18:15:01
【问题描述】:
我正在构建一个小型应用程序,用户可以在其中发布短消息和网址 (twitter)
为了呈现带有 url 的帖子,我使用自动链接 gem https://github.com/tenderlove/rails_autolink 和以下代码,从文本中提取 url 并将它们转换为链接:
<%= auto_link(feed_item.content) %>
我还设法通过使用 bitly api 和 bitly gem 来呈现缩短的 url; https://github.com/philnash/bitly/
<%= auto_link(client.shorten("http://google.com").short_url) %>
我尝试在创建帖子时使用模型中的以下代码进行缩短。
class Micropost < ActiveRecord::Base
before_create :bitly_shorten
private
def bitly_shorten
client = Bitly.client
urls = URI.extract(self.content)
urls.each do |url|
self.content.gsub(url, client.shorten(url).short_url)
end
end
end
即使链接显示在我的 bitly 仪表板中,也只有完整的 url 会保存到数据库中。这段代码有什么问题?
【问题讨论】:
-
就像 Rovin 和 Simone 所说,如果可能的话,您应该避免在每次页面查看时调用 Bitly API,因为两次缩短相同的长 URL 总是会返回相同的短 URL,但确实如此计入速率限制。
标签: ruby-on-rails ruby bit.ly