我想做两件事:将IP地址输入转换为CIDR以下是一些示例输入:
1.1.1.1
192.168.*.* #=> 192.168.0-255.0-255
192.168.1.2-20
1.1.1-10.1-100
Run Code Online (Sandbox Code Playgroud)
检查给定的IP地址是否属于任何CIDR.这必须是一个非常快速的查询,因为它是我的Web应用程序中非常常见的查找.我想做这样的事情:
def matches?(request)
valid = @ips.select {|cidr| cidr.contains?(request.remote_ip) }
!valid.empty?
end
Run Code Online (Sandbox Code Playgroud)
我认为将IP范围转换为CIDR将使查找比我们现在所做的更快,这将IP分解为整数八位字节.然后,我们将前两组八位字节编入索引以部分匹配IP.另一个选择可能是将所有内容转换为int并以这种方式进行比较.我会用这样的东西转换成int IPAddr.new("1.1.1.1").to_i但是我需要为每个范围存储一个上限和下限IP而不是一个CIDR.
如果我忽视任何主流方法,流行宝石或回购,请告诉我.谢谢!
我在Rails 3.2.8上,我想切换到使用资产管道.
我在我的开发机器上,我的资产设置如下
app/assets/stylesheets/application.css:
...
*= require_directory ../public/javascripts/jquery/themes/base
*= require_directory ../public/prototype/stylesheets/css
*/
Run Code Online (Sandbox Code Playgroud)
我的所有样式表和js和图像都在公共文件夹中,这是现在的一个包罗万象.文件夹结构:
app/assets
/stylesheets
/application.css
/javascripts
/images
/public
/stylesheets
/javascripts
/prototype
/images
Run Code Online (Sandbox Code Playgroud)
目前该public/assets/application.css文件为空.如何在开发环境中编译此文件?
当我Rails.application.config.assets.paths在rails控制台中运行时,我得到的app/assets/public不是资产的完整目录路径.
在视图中,我调用资产管道样式表:
<%= stylesheet_link_tag 'application.css' %>
编辑1:我尝试将所有样式表移动到app/assets/stylesheets/但是它没有在视图中正确编译application.css.它汇总到这个:
<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />
当我查看链接时,localhost:3000/assets/application.css它是一个空白文件.
编辑2:我使用单引号而不是双引号来修复语法错误.我想我现在已经找到了路径.谢谢!
我通过SFTP将一批文件发送到远程服务器.如果它是本地目录,我可以做这样的事情ls -l | wc -l来获得文件总数.但是,使用SFTP,我收到错误Can't ls: "/|" not found.