我在尝试做一些我认为相当简单的事情时遇到了很多麻烦.
我有一个项目列表,比方说,todos.在该列表的底部,我有一个文本字段,我在其中添加新项目到该列表.我想这样做,以便新项目动态地添加到该列表的底部,而无需像聊天窗口那样刷新整个页面.
我提交了提交表单remote: true并成功提交,但没有重新加载页面,但我无法让新项目同时显示在列表的底部.我必须刷新页面才能看到更改.
我尝试了一些我在SO上找到的不同方法(这里不乏类似的问题)和网络,甚至是一个名为Sync的宝石,但每个都有自己的错误和问题,我无法工作正常.他们每个人都可能是自己的问题.所以我要问:是否有一个"配方"肯定会在Rails 4中成功实现这一点?
我正在从资产管道迁移到Rails 4应用程序中的Webpack 2。除了在.js.erb视图中使用jQuery的JS代码外,其他一切似乎都可以正常工作。
webpack.config.js的内容如下(指纹和压缩的省略代码):
const path = require('path')
const webpack = require('webpack')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const jsOutputTemplate = 'javascripts/[name].js'
const cssOutputTemplate = 'stylesheets/[name].css'
module.exports = {
context: path.join(__dirname, '/app/assets'),
entry: {
application: ['./javascripts/application.js', './stylesheets/application.scss']
},
output: {
path: path.join(__dirname, '/public'),
filename: jsOutputTemplate
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
options: {
presets: ['es2015']
}
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract(['css-loader', 'resolve-url-loader'])
},
{
test: /\.s(a|c)ss$/,
use: ExtractTextPlugin.extract(['css-loader', 'resolve-url-loader', 'sass-loader?sourceMap'])
},
{ …Run Code Online (Sandbox Code Playgroud) 我的其中一个课程中有下一个代码:
class Settings < ActiveRecord::Base
def self.current
@settings ||= Settings.where({ environment: Rails.env }).first_or_create!
end
# Other methods
end
Run Code Online (Sandbox Code Playgroud)
基本行为:
对于这种方法,我有下一个测试:
describe Settings do
describe ".current" do
it "gets all settings for current environment" do
expect(Settings.current).to eq(Settings.where({ environment: 'test' }).first)
end
end
end
Run Code Online (Sandbox Code Playgroud)
我对此感到不舒服,因为我实际上并没有测试memoization,所以我一直在关注这个问题的方法,我尝试过类似的东西:
describe ".current" do
it "gets all settings for current environment" do
expect(Settings).to receive(:where).with({ environment: 'test' }).once
2.times { Settings.current }
end
end
Run Code Online (Sandbox Code Playgroud)
但是此测试返回以下错误:
NoMethodError:
undefined method `first_or_create!' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何使用RSpec测试此方法的memoization?
更新:
最后,我的方法如下: …
我试图找到设计如何产生remember_token.
我注意到它是生成的(并存储在cookie中),即使DB中没有令牌列来保存它.我想了解它的工作原理,但我找不到合适的位置.
有人能指点我的源代码文件吗?
我使用Docker运行我的rails应用程序.延迟作业由单个工作程序处理,该工作程序在一个单独的控制器中运行,worker并且在其内部工作程序使用命令运行bundle exec rake jobs:work.
我有几种类型的工作,我想移动到一个单独的队列,并为此创建一个单独的工作者.或至少有两名工人负责过程任务.
我尝试运行我的工作容器,env QUEUE=default_queue bundle exec rake job:work && env QUEUE=another_queue bundle exec rake job:work但这没有任何意义.它没有失败,是启动但不处理作业.
有没有办法让一个容器中有单独的工人?这是对的吗?或者我应该为每个我想做的工人创建单独的容器?
Thanx提前!
jquery ×2
ruby ×2
ajax ×1
delayed-job ×1
devise ×1
docker ×1
erb ×1
javascript ×1
memoization ×1
rspec-rails ×1
rspec2 ×1
webpack ×1