我有一个SQL SELECT查询,它有一个包含下划线的LIKE子句,它应该专门查找下划线,而不是将其视为通配符:
SELECT * FROM my_table WHERE name LIKE '_H9%';
Run Code Online (Sandbox Code Playgroud)
我知道我可以将实际子句更改为'[_] H9%',以使其按预期工作,但问题是该子句是由Hibernate生成的.
有没有办法配置Hibernate以这种方式逃避所有查询中的所有下划线?如果失败了,有没有办法配置SQL Server(在我的情况下为2008)不将下划线视为通配符?
我正在考虑转换我们的Rails 2.3应用程序以正确处理时区(目前所有内容都是UTC,这是不对的,但很方便!).
我在environment.rb中有这些设置:
config.active_record.default_timezone = :utc
config.time_zone = "UTC"
Run Code Online (Sandbox Code Playgroud)
继续,在我们的应用程序中的每个请求,我计划进行以下设置来设置时区:
Time.zone = user.time_zone
Run Code Online (Sandbox Code Playgroud)
user.time_zone他们选择的偏好在哪里(例如US Pacific Time).
这在应用程序中运行良好,但我的问题与Rails然后存储在MySQL DB中有关.如果用户选择2009年6月1日的日期,则会DATETIME以UTC 格式存储在数据库中的字段中,但会使用时区偏移量.例如,如果用户选择了GMT+6时区,则2009年6月1日的选定日期将在数据库中结束2009-06-01 06:00:00 UTC.
我原以为这将存储2009-06-01 00:00:00 UTC在数据库中.我的想法是正确的还是Rails在这里做了一些意外的事情?
我们的Ruby on Rails应用程序的一些用户抱怨说,页面请求偶尔会在Safari下无限期挂起(一对夫妇在Firefox下注意到它,但它绝大多数都是Safari用户).经过一些调查后,我们的Rails应用程序似乎正确地提供了这些请求,并且在获取HTML中引用的图像资源(托管在同一服务器上)时发生挂起.
我们已将Apache配置为直接为图像资源提供服务,并绕过Rails应用程序以提高性能.我们还在text/javascript/css资产上启用了gzip压缩.以下是我们的Apache虚拟主机配置中的相关设置 - 也许我们已经以这样的方式配置了这可以解释这些任意挂起请求?
RewriteEngine On
# Correct behaviour of IE under SSL
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
SSLEngine On
SSLCertificateFile /etc/httpd/conf/ssl/_.mycert.com.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/_. mycert.com.key
SSLCertificateChainFile /etc/httpd/conf/ssl/gd_bundle.crt
RequestHeader set X_ORIGINAL_PROTOCOL 'https'
RequestHeader set X_FORWARDED_PROTO 'https'
# Rewrite index to check for static
RewriteRule ^/$ /index.html [QSA]
RewriteRule "^/(images|stylesheets|javascripts|system)/?(.*)" "$0" [L]
# Rewrite to check for Rails cached page
RewriteRule ^([^.]+)$ $1.html [QSA]
# Deflate
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
BrowserMatch ^Mozilla/4 …Run Code Online (Sandbox Code Playgroud) 我的Rails应用程序中的所有图像资源/public/images都存在于Apache中,如果它们存在于服务器上,则由Apache提供服务.如果发出了丢失图像的请求,Apache就无法提供服务,因此它会被传递给Rails,然后Rails会引发404.
理想情况下,我希望在Apache级别处理任何丢失图像的请求,而不是转发到Rails.我怎样才能做到最好?
我正在使用Amazon S3来托管图片.S3存储桶是私有的,因此我生成一个临时URL(使用Right AWS),到期时间为5分钟,以允许渲染图像.URL看起来像这样(注意:下面的URL不起作用):
https://mybucket.s3.amazonaws.com:443/attachments%2F30%2Fsmall.png?Signature=J%2BXzQd95myCNv0Re8arMhuTFSvk%3D&Expires=1235511662&AWSAccessKeyId=1K3MW21E6T8LWBY94C01
Run Code Online (Sandbox Code Playgroud)
这很好用,我可以将URL粘贴到Firefox中并显示图像.IE也是如此.但是,当我在Safari中尝试时,URL似乎已解析但未显示任何图像.类似地,如果我尝试在网页上的IMG标记的src属性中使用URL,则Safari不会呈现任何内容(在所有其他浏览器中都很好),例如:
alt text http://lylo.co.uk/screenshot.png
有没有人见过这种行为,你能否指出我可能做错了什么?
我正在运行最新的Rails 2-3-stable分支(目前为2.3.3).
我正在使用JQuery向我的'create'操作发布一个AJAX请求,其中我有以下块:
respond_to do |format|
format.js
end
Run Code Online (Sandbox Code Playgroud)
我已创建create.js.erb并测试此操作,我添加了以下单行:
alert('hello');
Run Code Online (Sandbox Code Playgroud)
请求正确进入format.js块,但响应尝试呈现布局.这是我的日志:
Jul 22 20:44:27 [2970] INFO: Rendering template within layouts/application
Jul 22 20:44:27 [2970] INFO: Rendering contacts/create
Run Code Online (Sandbox Code Playgroud)
如果我将respond_to块更改为以下内容,则可以:
respond_to do |format|
format.js { render :layout => false }
end
Run Code Online (Sandbox Code Playgroud)
这是预期的行为还是Rails中的一个错误?我原以为我渲染JS响应就足以将布局设置为false.
我的Account模型有以下两种关联:
has_many :expenses,
:order => 'expenses.dated_on DESC',
:dependent => :destroy
has_many :recent_expenses,
:class_name => 'Expense',
:conditions => "expenses.dated_on <= '#{Date.today}'",
:order => 'dated_on DESC',
:limit => 5
Run Code Online (Sandbox Code Playgroud)
在我的一个观点中,我正在渲染最近的费用:
<% @account.recent_expenses.each do |expense| %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
在我的开发计算机上,在登台服务器(在生产模式下运行)以及生产控制台上,@account.recent_expenses返回正确的列表.但是,在我们的实时生产服务器上,不会返回最近的费用.
如果我在视图中替换@account.recent_expenses,则会显示@account.expenses最近的开销,因此我的猜测是条件子句的一部分在第一次执行时以某种方式被缓存.如果我重新启动生产Mongrel群集,则会正确返回所有最新费用.#{Date.today}
任何人都可以想到为什么会发生这种情况以及如何更改:recent_expenses查询以防止这种情况发生?
我正在使用Rails 2.1.0.
我刚刚从Rails 2.1更新到Rails 2.3.2,并注意到:disabled在输入字段上使用该选项的问题.
以前我们使用此选项作为布尔值,因此我们将指示是否要根据对象上的方法禁用字段,例如
f.text_field :amount, :disabled => @my_object.is_disabled?, :class => 'my_class'
Run Code Online (Sandbox Code Playgroud)
这在Rails 2.1中工作正常 - 如果is_disabled?返回true,则表单字段被禁用,否则不是.
但是在Rails 2.3中,情况并非如此.无论值是什么,表单字段都被禁用:disabled.
这是否意味着我必须if围绕我的f.text_field声明发表声明,例如:
<% if @my_object.is_disabled? %>
<%= f.text_field :amount, :disabled => 'disabled', :class => 'my_class' %>
<% else %>
<%= f.text_field :amount, :class => 'my_class' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
当然我在这里错过了一些东西?
My Rails应用程序有许多任务可以卸载到后台进程中,例如图像大小调整和上传到S3.我正在使用delayed_job来管理这些进程.
这些过程,特别是缩略图PDF(使用Ghostscript)和调整图像大小(使用ImageMagick),是CPU密集型的,通常占用100%的CPU时间.由于这些作业在与Web应用程序本身(以及数据库)相同的(RedHat Linux)服务器上运行,因此可能导致我们的Web应用程序无响应.
一种解决方案是获取另一台仅运行后台作业的服务器.我想这将是最佳解决方案?但是,由于这不是我能立即做的事情,我想知道是否有可能以某种方式使后台作业以较低的操作系统优先级运行,因此在工作中消耗较少的CPU周期?
思想赞赏.
在我的应用程序中,我有各种日期序列,例如每周,每月和每年.鉴于过去的任意日期,我需要计算序列中的下一个未来日期.
目前我正在使用次优循环.这是一个简化的例子(在Ruby/Rails中):
def calculate_next_date(from_date)
next_date = from_date
while next_date < Date.today
next_date += 1.week # (or 1.month)
end
next_date
end
Run Code Online (Sandbox Code Playgroud)
而不是执行一个循环(虽然简单,但效率很低,特别是在远处给出一个日期时)我想通过计算两个日期之间的周数(或几个月,几年)来进行日期算术,计算余数并使用这些值生成下一个日期.
这是正确的方法,还是我错过了一种特别聪明的"Ruby"解决方法?或者我应该坚持我的循环以简化这一切?
我正在使用标准的Rails I18n API来本地化我们的一些视图.这工作得非常好,但我们现在有一些用于区域更改的用例en.
该API指南中提到,这是不直接支持,并应使用其他插件.但是,我想知道是否有一种更简单的方法可以做到这一点.
我已经拥有了en.yml,所以理论上我可以创建en-AU.yml并且en-US.yml有效克隆en.yml但是应用了一些区域变化.然后,我可以添加额外的English - American和English - Australian选择,我们的配置这将映射到新的区域特定的语言环境,并允许用户使用特定的区域语言环境.
我能想到的唯一问题是它不是DRY - 我会翻译所有常见的英语单词.我无法看到解决这个问题的方法.
这种方法还有其他任何缺点吗,或者我应该咬紧牙关并潜入其中一个插件,例如Globalize2?
虽然我们的应用程序使用number_to_currency(value, :precision => 2). 但是,我们现在有一个要求,即该值可能需要显示到三个或更多小数位,例如
0.01 => "0.01"
10 => "10.00"
0.005 => "0.005"
Run Code Online (Sandbox Code Playgroud)
在我们当前的实现中,第三个示例呈现为:
0.005 => "0.01"
Run Code Online (Sandbox Code Playgroud)
我在这里采取的最佳方法是什么?可以number_to_currency为我工作吗?如果不是,我如何确定给定的浮点值应该显示到多少小数位? sprintf("%g", value)接近,但我不知道如何让它始终遵守至少 2dp。
ruby-on-rails ×10
ruby ×3
apache ×2
date ×2
safari ×2
algorithm ×1
amazon-s3 ×1
background ×1
decimal ×1
delayed-job ×1
globalize2 ×1
hibernate ×1
java ×1
linux ×1
localization ×1
mod-rewrite ×1
mysql ×1
right-aws ×1
rounding ×1
sql ×1
sql-server ×1
time ×1
timezone ×1