我正在努力找出保护我的临时环境的最佳方法.目前我在同一台服务器上运行暂存和生产.
我能想到的两个选择是:
使用rails摘要身份验证
我可以把这样的东西放在application_controller.rb中
# Password protection for staging environment
if RAILS_ENV == 'staging'
before_filter :authenticate_for_staging
end
def authenticate_for_staging
success = authenticate_or_request_with_http_digest("Staging") do |username|
if username == "staging"
"staging_password"
end
end
unless success
request_http_digest_authentication("Admin", "Authentication failed")
end
end
Run Code Online (Sandbox Code Playgroud)
这是从Ryan Daigle的博客中扯下来的.我正在运行最新的Rails 2.3,所以我应该摆脱他们对此的安全问题.
使用Web服务器身份验证
我也可以使用.htaccess或apache权限实现这一点,但是它使我的服务器配置稍微复杂一些(我使用Chef,并且需要不同的apache配置用于登台/生产).
现在我有第一个实施和工作,你看到它的问题吗?我错过了一些明显的事吗?提前致谢!
我正在努力让Araxis Merge 2010与Visual Studio集成工作,并且我将面临一个砖墙,你应该传递给Merge.exe.
根据他们的文档,它的论点应该是:
/wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4
然而,这似乎不起作用,有没有人知道问题可能是什么?
当进行合并时,工具弹出,但是头部说,/ wait和/ swap无法找到,这几乎就像它将标志解释为要比较的文件一样.
我有一个报告窗口,显示从可能长时间运行的oracle存储过程返回的结果.我的问题是当用户关闭窗口时,与oracle的连接仍然打开,并且可能长时间运行的报告不会被取消.
关闭打开连接的唯一方法是让DBA手动终止它们或让用户退出整个应用程序.
我试过Close从不同的线程调用连接,但这似乎不断阻止.我也试过回滚一个交易,但这也表现出同样的问题.
我担心唯一的解决方案是在不同的进程(或者app域?)中运行查询.
很可能我错过了一些明显的东西,任何帮助都会非常感激.
请阅读
这个问题不是关于在using声明中包装我的连接.它是关于如何强制执行查询的oracle连接关闭.
例:
在连接对象上调用close
public void Go()
{
OracleConnection connection;
var queryThread = new Thread(
() =>
{
using (connection = OpenOracleConnection())
{
// execute stored proc that takes 45 mins
// raise an event with the data set we load
}
});
Thread.Sleep(3000); // give it time to be useless
var closeThread = new Thread(
() =>
{
connection.Close();
});
closeThread.Start();
}
Run Code Online (Sandbox Code Playgroud)问题是这不会关闭连接,而是调用connection.Close()阻塞等待执行的过程.
我经常遇到我想要一次更新许多记录的情况 - 就像GMail设置许多消息"读取"或"未读"一样.
Rails通过ActiveRecord类的'update'方法鼓励这一点 - Comment.update(keys,values)
示例 - http://snippets.dzone.com/posts/show/7495
这是很棒的功能,但很难映射到一个宁静的路线.从某种意义上说,我希望看到:对集合采取行动.在路线中,我们可能会添加类似的东西
map.resources :comments, :collection => { :update_many => :put }
Run Code Online (Sandbox Code Playgroud)
然后在表格中,你会这样做......
<% form_for @comments do |f| %>
...
Run Code Online (Sandbox Code Playgroud)
这在许多层面都不起作用.如果你这样做:: collection => {:update_many =>:put},rails会向索引操作提交一个帖子(CommentsController #index),我希望它转到'update_many'动作.相反,你可以做:collection => {:update_many =>:post}.这至少会在控制器中执行正确的操作.
并且,而不是<%form for @comments ...您必须执行以下操作:
<% form_for :comments, :url => { :controller => :comments, :action => :update_many } do |f| %>
Run Code Online (Sandbox Code Playgroud)
它会以这种方式工作
仍然不完美 - 感觉有点像我们没有做'Rails方式'.它看起来也像:post,and:delete对集合控制器也有意义.
我在这里张贴,看看是否有任何我错过了设置它.关于如何安静地进行收集级别的任何其他想法:post,:put,:delete?
我处于令人羡慕的状态,不得不与遗留数据库集成,幸运的是出于读取目的,并选择使用NHibernate.到目前为止,一切都很好,但我有一个新的要求让我摸不着头脑.
在今天之前,我在表中有一列可以作为鉴别器,但现在事实证明,在某些情况下,我需要有一个以上的鉴别器列.这可能与NHibernate一起使用吗?
我已经研究过使用可行的公式,但现在我遇到的问题是我需要排除'未知'子类(那些尚未有映射的子类).例如我有这个:
DiscriminateSubClassesOnColumn("")
.Formula("case ... when ... then ... when .. then ... else 'unknown' end");
Run Code Online (Sandbox Code Playgroud)
我希望能够过滤掉所有"未知"的东西......
编辑:我认为可能的解决方案是使用AlwaysSelectWithValue(),启用它有什么影响?我相信它force与nhibernate映射xml中的相同.
c# nhibernate inheritance fluent-nhibernate fluent-nhibernate-mapping
我在调用session.Save()时遇到NHibernate.PersistentObjectException,这是由于未初始化的代理传递给save().如果我摆弄我的级联设置,我可以让它消失,但是后来没有保存子对象.
我找到的唯一其他修复方法是将以下内容添加到DefaultSaveEventListener中.
protected override bool ReassociateIfUninitializedProxy(object obj, global::NHibernate.Engine.ISessionImplementor source)
{
if (!NHibernateUtil.IsInitialized(obj))
NHibernateUtil.Initialize(obj);
return base.ReassociateIfUninitializedProxy(obj, source);
}
Run Code Online (Sandbox Code Playgroud)
这显然不是一个理想的解决方案.
有任何想法吗?
我正在尝试通过使用JMS作为传输协议的Websphere MQ向java服务器发送消息.我很高兴使用IBM提供的库在MQ上删除消息,但服务器拒绝它们.我假设(希望是正确的)这是因为我在MQ消息上缺少各种JMS特定的头/属性.
我已确保了信息的有效载荷是通过检查队列(他们都是地图信息是否有帮助)相同,但不想完全执行JMS的WebSphere MQ协议只是为了得到这个工作.
我想知道是否有人设法让这个工作,如果是这样,你需要在JMS头中指定的最小信息量是多少?有没有其他替代方法可以直接在MQ上执行此操作(我已经看过一些关于使用java互操作的东西,但这是我认为会有点过分的事情).
任何帮助将不胜感激!
我已将我的应用程序从使用升级config.gem到Gemfile捆绑包,并注意到我的单元测试现已停止运行.这有点奇怪,我不完全确定从哪里开始寻找.
当我运行时,rake test:units --trace我可以看到我的环境正在设置,它列出了它打算执行的文件,但它只是返回.
如果我尝试使用以下内容运行一个单独的文件,它会做同样的事情:rake -I"lib:test" test/unit/foo.rb或者使用autotest.
这一切都很奇怪.好像文件正在加载但实际的单元测试没有运行.
我正在使用shoulda并且fast_context我认为这可能是问题但是如果我使用标准def test_语法包含单元测试它仍然没有运行所以我不认为它是那些.
任何提示或指示将不胜感激.我觉得我编码是盲目的,直到我能让他们再次工作!
所以这就是我现在的位置:
我使用bundler的原因是为了在heroku上安装依赖项,因为我想在github上使用源自git repo的gem.它的长期和短缺是我已经删除了preinitializerfor bundler并重新使用config.gem.为了解决这个事实我不能使用github repo使用config.gem我已经将我自己的副本推出到rubygems.这是正确的举动吗?
这是preinitializer.rb
begin
require "rubygems"
require "bundler"
rescue LoadError
raise "Could not load the bundler gem. Install it with `gem install bundler`."
end
if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
"Run `gem install bundler` …Run Code Online (Sandbox Code Playgroud) 我们为其他团队创建了大量内部包,其中许多都依赖于开源包.我想将一个特定版本的nuget包添加到我的nuspec中,这样当最终用户安装我的包时,依赖包也会被安装.
我<dependencies>的nuspec部分看起来像这样:
<dependencies>
<dependency id="MassTransit" version="2.0.0.4" />
<dependency id="MassTransit.RabbitMQ" version="2.0.0.4" />
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我希望它只能降低MassTransit的2.0.0.4版本,但它会降低2.0.0.5,我的应用程序目前无法使用.我尝试过以下格式,但它们似乎都不起作用:
version="[2.0.0.4, 2.0.0.5)"
version="[2.0.0.4]"
version="2.0.0.5)"
Run Code Online (Sandbox Code Playgroud)
我确实有一个想法,那就是masstransit正在使用4位数的版本号,而所有的例子都是3位数的a-la semver.这可能导致我的问题吗?
编辑:
事实证明,构建服务器上的nuget版本已过时,并且不支持我想要使用的范围.升级它修复了一切!