小编Joh*_*ohn的帖子

Ruby/Rails中的IP范围到CIDR?

我想做两件事:将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.

如果我忽视任何主流方法,流行宝石或回购,请告诉我.谢谢!

ruby ip ruby-on-rails ip-address cidr

6
推荐指数
3
解决办法
5914
查看次数

application.css资产管道

我在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:我使用单引号而不是双引号来修复语法错误.我想我现在已经找到了路径.谢谢!

ruby-on-rails asset-pipeline

5
推荐指数
1
解决办法
1万
查看次数

SFTP:返回远程目录中的文件数量?

我通过SFTP将一批文件发送到远程服务器.如果它是本地目录,我可以做这样的事情ls -l | wc -l来获得文件总数.但是,使用SFTP,我收到错误Can't ls: "/|" not found.

bash sftp

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

ruby-on-rails ×2

asset-pipeline ×1

bash ×1

cidr ×1

ip ×1

ip-address ×1

ruby ×1

sftp ×1