我们有一些操作可以逻辑地分组到一个工作流程中,但并非所有操作都需要始终运行。
我知道
on:
push:
paths:
- 'docs/**'
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些信息应用于特定的工作或步骤?
我在生产服务器上为我的Rails 4应用程序记录了一个奇怪的错误:
ActionController::RoutingError: No route matches [GET] "/sign_up"
Run Code Online (Sandbox Code Playgroud)
这显然令人担忧,因为这意味着新用户无法注册.但是,如果我访问该URL,无论是通过手动输入,还是通过单击主页上的按钮,我都可以看到注册页面.
没有重定向,URL栏中的URL保持不变.
这是有问题的路线:
devise_scope :identity do
get 'sign_in', :to => 'devise/sessions#new'
get 'sign_up', :to => 'devise/registrations#new'
get 'sign_out', :to => 'devise/sessions#destroy'
end
Run Code Online (Sandbox Code Playgroud)
由于主题黑客攻击,我们主页上的按钮是一个用GET提交的表单.我认为这可能是一个问题,但日志显示它正确接收GET请求.
这里发生了什么?我应该从哪里开始寻找诊断?
UPDATE
通过我们主页上的黑客,我的意思是,由于<a class="btn...导航器不支持导航栏,我们使用方法GET的表单使用它支持的按钮类型 - 所以从服务器的角度来看,用户仍在发送单击该按钮时获取GET/sign_up.这个按钮只是为了让他们进入/ sign_up页面(registration_controller #new),这不是他们按下提交注册表单及其所有细节的按钮.
(注册表单本身正常,即发送POST)
为了清楚起见,我已经手动完成了整个注册过程,并且它可以正常工作.我从来没有得到404.当我进行漫步时,日志消息不会出现.
这是相关的部分 rake routes
Prefix Verb URI Pattern Controller#Action
new_identity_session GET /identities/sign_in(.:format) devise/sessions#new
identity_session POST /identities/sign_in(.:format) devise/sessions#create
destroy_identity_session DELETE /identities/sign_out(.:format) devise/sessions#destroy
cancel_identity_registration GET /identities/cancel(.:format) identities/registrations#cancel
identity_registration POST /identities(.:format) identities/registrations#create
new_identity_registration GET /identities/sign_up(.:format) identities/registrations#new
edit_identity_registration GET /identities/edit(.:format) identities/registrations#edit
PATCH …Run Code Online (Sandbox Code Playgroud) 我正在使用fixture_file_upload来测试我的rspecs中的一些文件上传
如果我只是把它放在规范中我得到一个错误的方法没有找到.
为了让它工作,我在我的规范中添加了包含ActionDispatch :: TestProcess,但是我发现自从我这样做以来,当我进行更改时,该警卫没有正确地重新加载spec文件,它会继续针对旧版本的文件运行测试.
我可以通过停止和重启警卫来解决这个问题,但它有点挫败了目的.
我该如何防止这种情况发生?我应该如何引用fixture_file_upload或者我应该在哪里放置包含?
我正在测试轮询资源的序列,直到满足条件.
Book = $resource("/books/:id", {id: "@id"});
function poll(success) {
Book.get({id:1}, function() {
if (canStop) {
success();
} else {
$timeout(poll, 1000);
}
});
};
Run Code Online (Sandbox Code Playgroud)
以下测试失败了 Error: Unsatisfied requests: GET /user_workshops/1
describe('poll', function() {
beforeEach(function() {
$httpBackend.expectGET('/books/1').respond(200,{id:1});
$httpBackend.expectGET('/books/1').respond(200,{id:1, newVal:1});
poll(function() {
successCalled = true;
});
$httpBackend.flush();
$timeout.flush();
canStop=true;
$httpBackend.flush();
});
it('should call success when canStop is true', function() {
expect(successCalled).toBe(true);
});
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试重新排列测试顺序,将第二个放在第二个expectGET之前,httpBackend.flush()但后来我得到:
Error: Unexpected request: POST /books/1
No more request expected
Run Code Online (Sandbox Code Playgroud) 我对AREL相当陌生,并且在查找有关将Postgres JSONB与AREL结合使用时遇到麻烦。
我如何将该SQL转换为AREL语句?
SELECT
tag,
count(tag)
FROM
people p,
jsonb_array_elements(p.data->'tags') tag
WHERE p.data->'tags' ? '#{tag}'
GROUP BY tag
Run Code Online (Sandbox Code Playgroud) 我有一个 postgres 列“数据”,它是这种格式的 jsonb:
{
'tags': ['friend','enemy','frenemy']
... // other data
}
Run Code Online (Sandbox Code Playgroud)
假设我想选择所有标记为“敌人”或“敌人”的行,我该怎么做?
我知道我可以选择一个标签
SELECT * FROM people WHERE people.data->'tags' ? 'enemy'
Run Code Online (Sandbox Code Playgroud)
我应该使用@> ANY,但无法弄清楚使其工作的语法。
我们的 mocha 测试突然停止,控制台上显示以下消息:
Cannot find module `pg-native`
Run Code Online (Sandbox Code Playgroud)
没有显示堆栈跟踪,mocha 不呈现测试的正常输出。测试立即停止。
如果我禁用有问题的测试,所有测试都会正常运行。
安装 pg-native 消除了错误,但是 mocha 只是挂在那个点上。
jsonb ×2
arel ×1
devise ×1
file-upload ×1
guard ×1
heroku ×1
httpbackend ×1
json ×1
mocha.js ×1
node.js ×1
postgresql ×1
rollbar ×1
rspec ×1
sequelize.js ×1