小编Chr*_*fer的帖子

Stylesheet_link_tag无法按预期工作

我正在使用Rails 3.1.1并在我的assets-folder中有样式表:

  • application.css
  • abc.css.scss
  • def.css.scss
  • 等等

也在子文件夹/ admin /我有admin.css.总而言之

  • application.css
  • 管理员/ admin.css
  • abc.css.scss
  • def.css.scss
  • 等等

现在,通过使用:

<%= stylesheet_link_tag 'application' %>
Run Code Online (Sandbox Code Playgroud)

...(这似乎是默认的)我希望它只加载application.css但它不仅加载application.css而且加载abc.css.scss等.

<link href="/assets/application.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/admin/admin.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/affiliate_types.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/benefits.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/buy_this_ifs.css?body=1" media="screen" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

另外,它在/ admin/-subfolder中加载admin.css.据我所知,递归被默认为假,所以它不应该,对吧?

无论如何,我试过:

  <%= stylesheet_link_tag 'application', :recursive => false %>
Run Code Online (Sandbox Code Playgroud)

它仍然加载了admin/admin.css.换句话说,与上面的结果相同.

如果我尝试:

  <%= stylesheet_link_tag :all %>
Run Code Online (Sandbox Code Playgroud)

它只是加载一个它找不到的"all.css".

我试过变种:cache => true:cache => false无济于事.

我的问题:

  1. 如何让rails导入所有样式表(application.css,abc.css.scss等)但不是admin/admin.css?

  2. 如何使admin.css继承自application.css?我只想拥有管理界面的独特功能(例如不同的车身颜色).

ruby-on-rails stylesheet

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

Rails:在服务器上启动脚本然后“离开”

我想在 Heroku 上的应用程序上运行一个 rake 脚本,这将需要几个小时。如果我从笔记本电脑的控制台启动它,然后关闭我的笔记本电脑,脚本将停止(并且我将不得不在脚本完成之前关闭我的笔记本电脑)。

如何在不“绑定”到我的笔记本电脑的情况下启动这个 rake 脚本。即让它继续运行直到它中断或完成?

heroku run rake update_feeds_complete --app myapp
Run Code Online (Sandbox Code Playgroud)

是要运行的脚本吗...

向我提供有关向 Google 发送哪些命令等的建议也会有所帮助。

rake ruby-on-rails heroku

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

Rails:如果存在缓存片段,则跳过控制器(使用cache_key)

我一直在使用缓存,最近发现我的片段缓存并没有阻止我的控制器执行代码,因为它一直都是.我把问题归结为与cache_key有关,这似乎是一个新功能?

这是我以前的解决方案,不再按预期工作.

产品#显示视图:

cache('product-' + @product.id.to_s)  do
# View stuff
end
Run Code Online (Sandbox Code Playgroud)

产品#显示控制器:

unless fragment_exist?('product-19834') # ID obviously dynamically loaded
# Perform slow calculations
end
Run Code Online (Sandbox Code Playgroud)

缓存工作正常.它写入和读取片段,但它仍然执行控制器(这是我想使用缓存的全部原因).这归结为片段具有添加的唯一ID,因此创建的片段类似于:

views/product-19834/b05c4ed1bdb428f73b2c73203769b40f
Run Code Online (Sandbox Code Playgroud)

因此,当我检查fragment_exist是否正在检查正确的字符串时(因为我正在检查'views/product-19834').我也试过用:

fragment_exist?("product-#{@product.id}/#{@product.cache_key}")
Run Code Online (Sandbox Code Playgroud)

但它使用与实际创建的不同的cache_key进行检查.

我宁愿使用这个解决方案而不是控制器缓存或像互锁这样的宝石.

我的问题是: - 如何在控制器中检查考虑此缓存密钥的特定视图是否存在片段?

caching ruby-on-rails

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

Rails:为Heroku正确设置DNS,Rack-rewrite等

我已经浏览了整个互联网,但无法得到最终的解决方案,我希望100%正确设置DNS等,以便在Heroku.com上获得以下结果:

我可以从任何地方得到一些帮助,但没有任何结论可以解决从DNS到机架重写的整个问题,这就是我在这里问的原因(我的注册商和Heroku的支持只能给我"他们的部分" ).

据我所知,需要做的是:

  1. 将mydomain.com和www.mydomain.com添加到Heroku的自定义域

  2. 在我的注册商DNS中将CNAME更改为http://myapp.herokuapp.com.问题:使用CNAME重定向到myapp.herokuapp.com会是"www"还是"*"?

  3. 添加"@"DNS记录以处理裸域请求(http://mydomain.com).由于这不会使用CNAME,我使用https://devcenter.heroku.com/articles/custom-domains上的IP号码,尽管根据文章他们有严重的正常运行时间问题.

- 1-3给我留下了一个网站,该网站将同时提供http://mydomain.comhttp://www.mydomain.com的内容,网址http://myapp.herokuapp.com

C.现在,我想将所有内容从http://mydomain.com重定向到http://www.mydomain.com,并且根据Heroku的支持,这应该通过rack-rewrite来完成(https://github.com/jtrupiano /机架重写).使用那里的例子,代码应该是:

r301 %r{.*}, 'http://mydomain.com$&', :if => Proc.new {|rack_env|
  rack_env['SERVER_NAME'] != 'www.mydomain.com'
}
Run Code Online (Sandbox Code Playgroud)

然而,这为我创造了一个永恒的循环.

那么,我现在的问题是:为了实现这种设置,Heroku和DNS设置的正确工作流程什么?

对此进行故障排除非常困难,因为通过反复试验来尝试不同的DNS设置非常困难(很难知道它们是否已经通过).

dns ruby-on-rails rack-rewrite

2
推荐指数
1
解决办法
1011
查看次数

显示图像的 AWS S3 策略(只读)。请验证

我很惊讶为 AWS S3 存储桶授予只读权限是多么复杂。也许只是我,但我想有几个人使用 S3 来存储网站的图像,从而使它们可用,但只读应该是“单击并选择”选项。

相反,据我所知,您为此使用存储桶策略,使用他们的存储桶策略生成器

我创建了这个政策,据我所知应该做我想做的:

{
    "Version": "2012-10-17",
    "Id": "Policy1441664301333",
    "Statement": [
        {
            "Sid": "Stmt1441664293105",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

其中my-bucket-name当然被替换。这在使我的图像(整个存储桶只是图像)公开可用方面起作用。由于我根本不了解此政策中的代码,而且我似乎无法找到有关它的阅读位置,因此我想验证一下:

  • 除了读取我的存储桶中的文件之外,此策略是否允许用户执行其他操作?即有人可以删除,上传文件等吗?基本上,我的图像是否有发生恶意事件的风险?

我相信这是可以在 StackOverflow 上提出的问题的边界,但我认为这个问题很常见,因此对其他人和参考都很有趣。

amazon-s3

2
推荐指数
1
解决办法
1423
查看次数

你能相信New Relic"页面平均加载时间"吗?

使用:rails 3.2.11和New Relic(免费版).

我有一些问题,一个应用程序很慢.我已经检查了它并加速了我的应用程序.根据New Relic的说法,应用程序仍然很慢,特别是在渲染阶段.见图:新Relice屏幕转储

根据Pingdom的说法,它似乎是在2-4秒的时间内加载,这也是我访问网站时的体验.

我正在使用Memcachier,这会大大加快页面的速度,但是New Relic总是可以计入未缓存的控制器运行?

我最大的问题是,你能相信New Relic"平均页面加载时间"是你网站真正有多慢的关键吗?你更信任Pingdom的结果吗?

ruby-on-rails newrelic

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

Rails:测试并处理ActionController :: InvalidAuthenticityToken

我有一个Rails网络应用程序,用户可以使用一些表单进行评论等.他们经常被垃圾邮件发送者用来尝试创建垃圾评论.没什么新鲜的.

有时我会遇到导致ActionController :: InvalidAuthenticityToken异常的CSRF-hack尝试.这种情况发生了很多,我想拯救并将用户/机器人发送到"你没有评论"页面.

事实证明这是一个棘手的例外,因为我不能自己重新创建错误.当模型(由表单创建)被保存但是它没有捕获异常时,我首先在#create中进行了拯救.为了做到这一点,我考虑让它覆盖整个控制器部分,但这似乎超过顶部.

我的两个问题:

  1. 有没有办法自己重新创建一个ActionController :: InvalidAuthenticityToken错误,所以我可以测试一下吗?

  2. 什么时候提出异常?在.save期间?在Comment.new?基本上,我应该在哪里开始/救援?

谢谢!

exception-handling ruby-on-rails csrf

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

Anaconda 安装重复库

我刚开始使用 Anaconda,随着我的硬盘驱动器被填满,我意识到在以下目录中存在多个(大)文件作为重复项:

/anaconda3/pkgs/.../lib/<file>
/anaconda3/lib/<file>
Run Code Online (Sandbox Code Playgroud)

复制文件的示例是libmklml.dylib. 此外还有重复的文件,例如:

tensorflow-base-1.13.1-mkl_py36hc36dc97_0.tar.bz2
tensorflow-base-1.13.1-mkl_py37h66b1bf0_0.tar.bz2
Run Code Online (Sandbox Code Playgroud)

在同一个目录中。

我的猜测是 /pkgs/ 文件夹是下载时的文件,而 anaconda/lib/ 目录是执行库的位置。我很困惑为什么每个文件都有重复的版本。

我可以删除其中任何一个吗?如果可以,如何删除?我尝试过conda clean -p(以及conda clean -a),它似乎删除了大约 1.5 Gb 的文件,但没有删除这些类型的重复文件。

python anaconda

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

Rails和Utf-8编码

我知道这是编程史上最常见的问题,但我真的相信我现在已经尝试过但我仍然得到:incompatible character encodings: UTF-8 and ASCII-8BIT在我的页面#index.html文件中.

我正在运行Ruby 1.9.2和Rails 3.1.1.

这是我验证/测试/设置的内容:

  • 在database.yml中,设置encoding:utf8

    开发:适配器:mysql编码:utf8重新连接:false数据库:kopa_development pool:5用户名:root密码:host:localhost

  • 使用Notepad ++检查术语中的文本文件是否编码为utf-8

  • 用mysql查询浏览器检查数据库设置为utf-8,列也是如此
  • 我试过#code:utf-8在控制器中与我想看的视图有关.
  • 我把SET NAMES utf8放在mysql中
  • 我在environment.rb中尝试过Encoding.default_internal = Encoding :: UTF_8以及Encoding.default_external = Encoding :: UTF_8
  • 我在application.rb中有config.encoding ="utf-8"
  • 我用Google搜索了
  • 我已阅读http://www.joelonsoftware.com/articles/Unicode.html
  • 我已经尝试过Notepad ++和RubyMine
  • 添加.force_encoding有效,但非常不方便

一个有趣的事情是,如果我将index.html.erb设置为ANSI,它会抱怨application.html.erb没有正确的编码(而不是index.html.erb).我不知道这意味着什么,但它让我觉得编辑有些可疑.

我记得在使用电子文本编辑器时,我可以设置两件事(参考编码)编码和其他东西.那个"别的"我不记得它是什么,我不再有了.

关于错误消息,我是否正确理解,首先提到的是数据库编码,第二个是Rails(?)编码?我也看到了相反的错误消息(ASCII first和UTF-8 after).

编辑:我今天早上用Google搜索了一些,发现mysql-gem有问题.文章有点旧,我尝试了解决方案(如尝试mysql2和ruby-mysql)没有更好的运气.

我完全没有想法.你呢?

encoding ruby-on-rails utf-8

0
推荐指数
1
解决办法
1464
查看次数