我想使用开发环境测试我的Rails应用程序中的500个错误页面.
我已经尝试过了config/environments/development.rb:
config.action_controller.consider_all_requests_local = false
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何影响.
从上面描述的映射中删除元素时遇到问题.这是映射:
@Entity
@Table( name = "foo")
class Foo {
private List bars;
@OneToMany
@OrderColumn( name = "order_index" )
@JoinTable( name = "foo_bar_map", joinColumns = @JoinColumn( name = "foo_id" ), inverseJoinColumns = @JoinColumn( name = "bar_id" ) )
@Fetch( FetchMode.SUBSELECT )
public List getBars() {
return bars;
}
}
插入Bar-instances并保存Foo工作正常,但是当我从列表中删除元素并再次保存时,违反了映射表中bar_id的唯一约束.以下SQL语句是由hibernate发布的,这看起来很奇怪:
LOG: execute : delete from foo_bar_map where foo_id=$1 and order_index=$2 DETAIL: parameters: $1 = '4', $2 = '6' LOG: execute S_5: update foo_bar_map set bar_id=$1 where foo_id=$2 and order_index=$3 DETAIL: parameters: …
正在打电话
HttpServletResponse.addCookie();
Run Code Online (Sandbox Code Playgroud)
(来自servlet-api-2.5)多次使用同名的cookie安全吗?
从某种意义上讲是安全的,有一种确定性的行为,例如后续的调用将被忽略(第一次获胜)或后续的调用将总是取代cookie或类似的东西?
例:
HttpServletResponse response = ...;
response.addCookie(new Cookie("foo", "bar"));
response.addCookie(new Cookie("foo", "42"));
Run Code Online (Sandbox Code Playgroud)
哪个值将被传输到浏览器并存储?
Rails以某种方式混合我的语言环境,我完全不知道为什么.我翻译的大部分字符串都按预期工作,但对于某些字符串,它会混合使用语言环境.
有趣的是,这只发生在我们的一个系统上.特别是用Apache运行Passenger.
在我的开发系统上使用Webrick,Thin或Passenger Standalone时,一切都会好起来的.
这就是我的意思application.rb:
config.i18n.default_locale = :de
Run Code Online (Sandbox Code Playgroud)
这是application_controller.rb:
before_filter :set_locale
def set_locale
I18n.locale = @current_client ? @current_client.locale : I18n.default_locale
end
Run Code Online (Sandbox Code Playgroud)
(我体验网页上的问题,这里@current_client是nil和else部分被执行).
所以,我基本上使用的是:de语言环境.在表单上显示验证错误时,我会遇到如下混合翻译:
ist zu kurz(nicht weniger als 6 Zeichen)和翻译缺失:en.activerecord.errors.custom.password_format
如您所见,第一个失败验证的错误消息按预期转换,因为第二个错误消息尝试访问英语翻译(不存在).
我怀疑before_filter在执行获取之前延迟加载已翻译的字符串存在问题.
任何线索为什么会发生这种情况?
记录:这是Rails 3
编辑:
我刚刚发现这取决于所使用的环境.使用开发环境时,一切都很好.在使用生产环境(或类似生产)环境时,我会遇到上述行为.
编辑2:
我发现了更多:它具体取决于config.cache_classes.设置为时true,我会看到混合翻译.设置为false(如在典型的开发环境中),i18n按预期工作.
编辑3:
也许这与以下错误有关?
https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/5522
编辑4:
这与上面提到的bug有关,问题是由于急切加载的模型类,它们使用I18n字符串,但是在I18n初始化之前发生了急剧的类加载,因此找不到翻译.甚至有另一个错误:
https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/6353
不幸的是,Rails的人没有设法在最近的3.0.4版本中包含修复程序(据我所知).因此,我试图找出这样的解决方法(在我的应用程序配置中):
config.before_eager_load do
I18n.load_path += Dir[Rails.root.join('config', 'locales', 'de.yml').to_s]
I18n::Railtie.reloader.paths.concat I18n.load_path
I18n::Railtie.reloader.execute_if_updated …Run Code Online (Sandbox Code Playgroud) Wicket 会自动生成带有前缀“resources”(例如“http://localhost:8080/resources/org.apache.wicket.ajax.WicketAjaxReference/wicket-ajax.js”)的资源(图像等)的 URL。是否可以将此前缀从“资源”更改为其他内容(如“res”)?
我有另一个 servlet 在“资源”下提供内容,我无法更改它(不要问......),因此我希望 Wicket 使用不同的前缀为其资源提供服务。
谢谢!
我正在尝试使用exception_notification gem的当前版本(2.4.0)在Rails 3应用程序中为我的异常通知邮件设置自定义部分
README明确指出"您可以通过在app/views/exception_notifier目录中放置部分命名部分来自定义每个部分的呈现[...]您甚至可以添加描述特定于应用程序的数据的新部分"
我正在尝试这些:改变现有部分并添加新的自定义部分.只更改一个部分时,我更改的部分(app/views/exception_notifier/_session.text.erb)无效.当我添加新的自定义部分时,我在日志中收到以下错误:
ActionView::Template::Error (Missing partial exception_notifier/user with {:formats=>
[:text], :handlers=>[:haml, :rjs, :rhtml, :builder, :erb, :rxml], :locale=>[:de]} in
view paths "/usr/lib/ruby/gems/1.8/gems/exception_notification-2.4.0/lib/exception_notifier/views"):
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我怀疑视图路径是以某种方式搞砸了,并且exception_notifier根本不打算查看我的/ app/views/exception_notifier目录.
调用此方法:
public static @Nonnull <TV, TG extends TV> Maybe<TV> something(final @Nonnull TG value) {
return new Maybe<TV>(value);
}
Run Code Online (Sandbox Code Playgroud)
像这样:
public @Nonnull Maybe<Foo> visit() {
return Maybe.something(new BarExtendsFoo());
}
Run Code Online (Sandbox Code Playgroud)
在Eclipse中编译得很好,但是javac给出了一个"不兼容的类型"警告:
found : BarExtendsFoo
Run Code Online (Sandbox Code Playgroud)
要求:Foo