我希望能够用Ruby解析任何URL,以获得域的主要部分,而不需要www(只有example.com)

推荐答案

这应该适用于几乎所有的URL:

# URL always gets parsed twice
def get_host_without_www(url)
  url = "http://#{url}" if URI.parse(url).scheme.nil?
  host = URI.parse(url).host.downcase
  host.start_with?('www.') ? host[4..-1] : host
end

或者:

# Only parses twice if url doesn't start with a scheme
def get_host_without_www(url)
  uri = URI.parse(url)
  uri = URI.parse("http://#{url}") if uri.scheme.nil?
  host = uri.host.downcase
  host.start_with?('www.') ? host[4..-1] : host
end

你可能需要require 'uri'美元.

Ruby-on-rails相关问答推荐

Ubuntu Webhooks无法读取安装的正确RVM Ruby

Rails 7,返回具有两个单独条件的活动记录关联,一个在父级,一个在子级

仅在两个子域间共享Rails cookies,并为所有其他子域使用单独的cookie

Ruby Hash 中 tap / delete 和 except 的区别

Rails 7,Hotwire 动态表单,更新值不起作用

Selenium chromedriver:无法从不可键入的键构造KeyEvent

无效的单表继承类型:Rails

Rails:用于创建固定长度 char(12) 列的迁移

ActiveRecord 回调列表

如何使用 Capistrano gem 为生产数据库 seeder ?

Rails 3 中图像路径的完整 url

Rails 4,使用 ActiveRecord 的原始查询

在 Rails 中将 DateTime 字符串转换为 UTC

在 PostgreSQL 中强制字符串的最大长度

Rails 3. 构建 oauth2 提供程序

如何覆盖:在 has_many 中定义的顺序

Heroku - 在浏览器中显示当前提交的哈希

Dotenv 多行变量

如何翻译 ActiveRecord 模型类名称?

rails 3,如何在 Settings.yml 文件中使用 ENV 配置变量?