小编Lin*_*der的帖子

rails simple_form - 隐藏字段 - 创建?

你怎么能有一个简单形式的隐藏领域?

以下代码:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit
Run Code Online (Sandbox Code Playgroud)

导致此错误:

undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails hidden-field form-for ruby-on-rails-3 simple-form

171
推荐指数
4
解决办法
11万
查看次数

不推荐使用":nothing"选项,将在Rails 5.1中删除

这个代码在rails 5中

class PagesController < ApplicationController
  def action
    render nothing: true
  end
end
Run Code Online (Sandbox Code Playgroud)

导致以下弃用警告

DEPRECATION WARNING: :nothing` option is deprecated and will be removed in Rails 5.1. Use `head` method to respond with empty response body.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

ruby-on-rails ruby-on-rails-5

101
推荐指数
1
解决办法
2万
查看次数

清除sidekiq队列

我是这个永远奔跑的工人.

class Worker
  include Sidekiq::Worker
  sidekiq_options queue: "infinity", retry: true

  def perform(params)
    # ...
    self.class.perform_in(30.seconds, params)
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是我在启动时加载工人,就像这样. config/initializers/load_workers.rb

Rails.application.config.after_initialize do  
  if ENV["SIDEKIQ"] == "1"
    Worker.perform_async({})
  end
end
Run Code Online (Sandbox Code Playgroud)

用这个来启动sidekiq SIDEKIQ=1 sidekiq --verbose --environment production -C config/sidekiq.yml.

这意味着老工人要停下来,既有目前正在运行的人,也有被重新安排的人.

我尝试在启动时运行它(在加载新工作之前),但这不起作用.

q = []
q += Sidekiq::RetrySet.new.select { |job| job.klass.match(/Worker/) }
q += Sidekiq::Queue.new("infinity").select { |job| job.klass.match(/Worker/) }
q += Sidekiq::ScheduledSet.new.select { |job| job.klass.match(/Worker/) }
q.each(&:delete)
Run Code Online (Sandbox Code Playgroud)

在5-ish部署之后,队列中有大量重复的工作程序安排在稍后.那么,有没有办法清除一个队列中的每一个并阻止已经重新安排的作业?

我正在使用sidekiq 3.0.

ruby-on-rails sidekiq

73
推荐指数
3
解决办法
5万
查看次数

使用Rails加密,解密

我刚才看到有可能在rails中解密和加密字符串而不包括任何库,但我找不到博客文章.

我希望能够加密和解密字符串而不包含任何内容.使用相同的密钥可以用于rails中的所有其他内容,例如签名的cookie.

有任何想法吗?

encryption ruby-on-rails

43
推荐指数
3
解决办法
3万
查看次数

上帝开始了太多的过程

我有一个上帝脚本,应该留意两个跟踪者进程.问题是24小时后启动的过程太多了.

这是神剧本.

rails_root = File.expand_path("../..", __FILE__)

2.times do |n|
  God.watch do |w|
    w.group = "app-scripts"
    w.name  = "run-#{n}"
    w.interval = 30.seconds
    w.dir      = File.dirname(__FILE__)

    w.env = {
      "BUNDLE_GEMFILE" => "#{rails_root}/Gemfile",
      "RAILS_ENV" => "production",
      "BEANSTALK_URL" => "beanstalk://127.0.0.1:54132"
    }

    w.start = "bbundle exec stalk #{File.join(rails_root, "config/jobs.rb")}"

    w.start_grace = 5.seconds
    w.stop_grace  = 5.seconds

    w.start_if do |start|
      start.condition(:process_running) { |c| c.running = false }
    end

    w.restart_if do |restart|
      restart.condition(:memory_usage) do |c|
        c.above = 200.megabytes
        c.times = [3, 5]
      end

      restart.condition(:cpu_usage) do |c|
        c.above …
Run Code Online (Sandbox Code Playgroud)

ruby god beanstalkd

24
推荐指数
2
解决办法
2468
查看次数

以非线程安全的方式'sass'

我试图在Rails 3.1 rc1中使用sass时收到这些警告.

WARN: tilt autoloading 'sass' in a non thread-safe way; explicit require 'sass' suggested.
WARN: tilt autoloading 'sass/plugin' in a non thread-safe way; explicit require 'sass/plugin' suggested.
Run Code Online (Sandbox Code Playgroud)

这是我的Gemfile.

gem "rails", "~> 3.1.0.rc1"
gem "haml"
gem "sass"
Run Code Online (Sandbox Code Playgroud)

我试图sass.rbconfig/initializers包含此代码的内部创建一个文件.

require "sass"
Run Code Online (Sandbox Code Playgroud)

将Gemfile更改为此.

gem "rails", "~> 3.1.0.rc1"
gem "haml"
gem "sass", require: false
Run Code Online (Sandbox Code Playgroud)

但警告仍然存在.谁知道怎么解决?

我找到打印警告的代码,如果有任何帮助的话.

ruby-on-rails sass ruby-on-rails-3 ruby-on-rails-3.1

19
推荐指数
1
解决办法
8834
查看次数

在gvim中更改光标的颜色

我想在当前模式下更改待处理光标的颜色.

这是我到目前为止的代码(.gvimrc).

set gcr=n:blinkon0
set gcr=i:blinkon0
highlight Cursor guifg=white guibg=red
highlight iCursor guifg=white guibg=green
Run Code Online (Sandbox Code Playgroud)

现在光标是灰色的,没有任何变化.运行highlight Cursor guifg=white guibg=red手工作品,但下面不就行了.

我希望插入模式下的颜色为绿色,其他模式下的颜色为红色.

vim

18
推荐指数
1
解决办法
8951
查看次数

覆盖rails 3中的默认脚手架生成器

我已经为rails 3中的控制器创建了一个生成器.现在我想在使用脚手架生成器时将此生成器用作默认生成器.

那可能吗?

ruby-on-rails

14
推荐指数
4
解决办法
5615
查看次数

在rails插件外无法访问ActionCable通道

我正在尝试创建一个暴露ActionCable频道的gem,但我无法让它工作.

这是我的宝石

# lib/my_channel.rb
class MyChannel < ActionCable::Channel::Base
  def wait(data)
    # logic ...
  end
end

# lib/engine.rb
module MyApp
  class Engine < ::Rails::Engine
    isolate_namespace MyApp
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我将gem添加到我的主应用程序中Gemfile,运行bundle install,启动控制台并运行MyChannel.哪个不产生和错误,意味着通道被正确包含.

然后我将其添加到我的主应用程序中

// application.js
var socket = "ws://localhost:3000/cable";
var cable = ActionCable.createConsumer(socket);
cable.subscriptions.create({ "channel": "MyChannel" }, {
  received: function(){
    // ...
  }
});
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

Subscription class not found ({"command"=>"subscribe", "identifier"=>"{\"channel\":\"MyChannel\"}"})
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

ruby ruby-on-rails ruby-on-rails-5 actioncable

14
推荐指数
1
解决办法
2870
查看次数

使用Capistrano进行部署 - 仅针对匹配的服务器运行

我试图使用Capistrano部署我的应用程序,但我收到此错误消息:

`deploy:setup'仅对匹配{:except => {:no_release => true}}的服务器运行,但没有匹配的服务器

运行此命令时:

bundle exec cap deploy:setup
Run Code Online (Sandbox Code Playgroud)

这是我的deploy.rb文件.

set :application, "example.com"
set :repository, "git@github.com:username/repo.git"
set :use_sudo, false
set :scm, :git
set :web, application
set :app, application
set :db, application
set :branch, "master"
set :user, "webmaster"
set :deploy_to,  "/opt/www/#{application}"
set :deploy_via, :remote_cache
set :domain, application
set :port, 2222

set :bundler_cmd, "bundle install --deployment --without=development,test"
ssh_options[:paranoid] = false

namespace :deploy do
  task :start do ; end
  task :stop do ; end

  task :restart_stalker do
    run "cd #{deploy_to}/current && …
Run Code Online (Sandbox Code Playgroud)

ruby capistrano ruby-on-rails ruby-on-rails-3

10
推荐指数
1
解决办法
1万
查看次数