我在某个控制器中有一个动作,它在永久签名的cookie中设置了一些值,如下所示:
def some_action
cookies.permanent.signed[:cookie_name] = "somevalue"
end
在一些功能测试中,我试图测试cookie是否设置正确起诉:
test "test cookies" do
assert_equal "somevalue", cookies.permanent.signed[:cookie_name]
end
但是,当我运行测试时,我收到以下错误:
NoMethodError: undefined method `permanent' for #
如果我只尝试:
test "test cookies" do
assert_equal "somevalue", cookies.signed[:cookie_name]
end
我明白了:
NoMethodError: undefined method `signed' for #
如何在Rails 3中测试签名的cookie?
我有一个带链接链接的HTML文档,例如:
<html>
<body>
<ul>
<li><a href="http://someurl.com/etc/etc">teste1</a></li>
<li><a href="http://someurl.com/etc/etc">teste2</a></li>
<li><a href="http://someurl.com/etc/etc">teste3</a></li>
<ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我希望使用Ruby on Rails,使用nokogiri或其他方法来获得这样的最终文档:
<html>
<body>
<ul>
<li><a href="http://myproxy.com/?url=http://someurl.com/etc/etc">teste1</a></li>
<li><a href="http://myproxy.com/?url=http://someurl.com/etc/etc">teste2</a></li>
<li><a href="http://myproxy.com/?url=http://someurl.com/etc/etc">teste3</a></li>
<ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳策略是什么?
我有一个rails 3.0.5应用程序,我正在设置capistrano使用食谱.
在我的配置目录中,我有一个名为"database_capistrano.rb"的文件,在我的deploy.rb中,也在config目录中,我有以下行,就在开头:
require 'database_capistrano'
但是我得到了:
`require': no such file to load -- capistrano_database (LoadError)
也尝试:
require 'database_capistrano.rb'
而且不工作......
如何在Rails 3.0.5中包含capistrano deploy.rb中的文件?
我的方案如下:
我有一个部署到servlet容器的WebApp.war.此WebApp.war在WEB-INF/lib中包含以下库:
我有另一个库,比如lib_vendor.jar,由于许可问题我无法在WebApp/WEB-INF/lib中部署,所以我让我们的客户在安装应用程序后在tomcat/lib中复制这个库.但由于lib_vendor.jar需要在Web应用程序类加载器中加载的lib_a.jar和lib_b.jar,因此我无法使用lib_vendor.jar.
如何在Web应用程序的同一个类加载器中加载外部库(不在WEB-INF/lib中)?
我跑的时候
rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
编译的资产写入公共/资产:
I, [2013-07-21T02:16:00.987988 #13881] INFO -- : Writing /home/jpereira/dev/saleshub/public/assets/glyphicons-halflings-white-62b67d9edee3db90d18833087f848d6e.png
I, [2013-07-21T02:16:01.037698 #13881] INFO -- : Writing /home/jpereira/dev/saleshub/public/assets/glyphicons-halflings-c806376f05e4ccabe2c5315a8e95667c.png
I, [2013-07-21T02:16:01.053630 #13881] INFO -- : Writing /home/jpereira/dev/saleshub/public/assets/marketing/slider-base/slide-01-b85e542137a02bedd6c30dede873ef1e.jpg
I, [2013-07-21T02:16:01.066371 #13881] INFO -- : Writing /home/jpereira/dev/saleshub/public/assets/marketing/slider-base/slide-02-e5106e911d8a0289bfaf2ac64308a640.jpg
I, [2013-07-21T02:16:01.077879 #13881] INFO -- : Writing /home/jpereira/dev/saleshub/public/assets/marketing/slider-base/slide-03-990dccbed4c70f0118b7d30d98094811.jpg
I, [2013-07-21T02:16:01.965560 #13881] INFO -- : Writing /home/jpereira/dev/saleshub/public/assets/application-98713f9763bccfd6bc05dae422d3e242.js
I, [2013-07-21T02:16:02.068469 #13881] INFO -- : Writing /home/jpereira/dev/saleshub/public/assets/application-a40c2cd9b0f20b2a7f3b62d45159fbb3.css
Run Code Online (Sandbox Code Playgroud)
然后,我在生产中启动应用程序,其中:
RAILS_ENV=production rails s
=> Booting WEBrick
=> Rails 4.0.0 application starting in production on http://0.0.0.0:3000
=> Run `rails server …Run Code Online (Sandbox Code Playgroud) 鉴于视图中的此 HTML:
<form id="new_merchant_user" method="post">
<fieldset>
<div id='legend'>
<legend>Recover Pasword</legend>
</div>
<input id="merchant_user_email" name="merchant_user[email]" type="text" value="" />
<input class="btn btn-success" name="commit" type="submit" value="Send Reset Instructions" />
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)
如何使用 assert_select 选择按钮的值?我试试
assert_select 'form input[type=submit]', "Send Reset Instructions"
Run Code Online (Sandbox Code Playgroud)
但它失败了
<Send Reset Instructions> expected but was
<>..
Expected 0 to be >= 1.
Run Code Online (Sandbox Code Playgroud)
基本上什么都不选。
我在这里做错了什么?
我有以下配置:
@org.springframework.context.annotation.Configuration
@EnableJpaRepositories
@EnableAsync
@EnableScheduling
public class MyConfiguration {
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(20);
executor.setQueueCapacity(50);
return executor;
}
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(10);
return scheduler;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我有一个侦听ContextRefreshEvents的类,例如:
@Component
public class ScreenerScheduler implements ApplicationListener<ContextRefreshedEvent> {
@Inject
private TaskScheduler scheduler;
@Inject
private ApplicationContext context;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序(网络)时,我得到:
Error creating bean with name 'screenerJobExecutor': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could …Run Code Online (Sandbox Code Playgroud) Rails如何计算控制器操作的响应代码?
给定以下控制器操作:
def update
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'show' }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Run Code Online (Sandbox Code Playgroud)
(我使用相同的视图来显示和编辑记录)
有了这个积极的测试:
test "should update basic user information" do
user = users(:jon)
user.first_name="Jonas"
put :update, :id => user.id, :merchant_user =>user.attributes
assert_response :found
user = Merchant::User.find(user.id)
assert user.first_name == "Jonas", "Should update basic user information"
end
Run Code Online (Sandbox Code Playgroud)
负面测试是这样的:
test "should …Run Code Online (Sandbox Code Playgroud) deployment ×2
java ×2
capistrano ×1
classloader ×1
html ×1
jrubyonrails ×1
nokogiri ×1
parsing ×1
servlets ×1
spring ×1
string ×1
testing ×1
tomcat ×1