Tag: ruby on rails 4

导轨4 – 闪光通知

我还在我的rails 4演示网站上工作,我看到一件奇怪的事情。 在控制器中它有一个这样的行: format.html { redirect_to @widget, notice: ‘Widget was successfully created.’ } 这会在重定向页面中呈现一条Flash消息,这是预期的。 但是,附加到消息div的css类是alert alert-notice而不是有效的Bootstrap警报类,如alert-info 。 为此闪存设置了哪个类,我该如何自定义它? 另外,如果我通过ajax删除记录,是否有办法访问核心闪存容器以通过js显示消息,或者我是否必须显示/隐藏我自己的flash消息div仅用于ajax请求? 编辑:我的Michael Hartl启发了layouts/application.html.erb : <div class="alert alert-“> 谢谢! 编辑2: 也许在我原来的问题中我不够清楚。 我完全理解在这种情况下如何在flash对象中设置类。 我有兴趣学习如何使用和自定义notice:在format.html块中。 似乎应该有办法通过这个通知传递课程? 或者这不是Rails的核心做事方式吗?

Rails 4用户角色和权限

我正在为一个组织编写一个rails应用程序。 每个用户可能有一个或多个角色,并且只能根据这些角色访问某些控制器操作。 例如,只有管理员可以创建,销毁和更新User的某些字段。 此外,还有Team ,每个团队都有团队领导 ,只有团队负责人可以更新团队的某些信息(例如,成员列表)。 但是, Admins是首先指派团队负责人的人。 我的场景的具体细节并不重要,我只希望我描述了有许多不同角色和权限的情况。 我的问题是:使用什么gem? 我的第一个想法是CanCan,但是最近一次提交是差不多一年前的,并没有提到Rails 4的兼容性。 是否有目前维护的替代方案?

资产编译崩溃在服务器环境中:“NoMethodError:未定义的方法`’为nil:NilClass”

我一直在为这一个拔头发。 我一直与资产管道关系不好,总是给我带来麻烦……今天又来了…… 当我尝试在本地编译我的资产时,一切都很好: $ RAILS_ENV=production rake assets:precompile –trace 但是当我使用Capistrano进行部署时: cd /var/www/xxx/releases/20140717164232 && ( RAILS_ENV=production bundle exec rake assets:precompile ) 它崩溃时出现以下错误: rake aborted! NoMethodError: undefined method `[]’ for nil:NilClass (in /var/www/xxx/releases/20140717164232/app/assets/stylesheets/application-sign-in.css) /var/www/xxx/shared/bundle/ruby/2.1.0/gems/sprockets-2.11.0/lib/sprockets/sass_functions.rb:63:in `sprockets_context’ 我真的不知道如何调试这个..本地我无法重现它,在我的服务器上错误只是没有指向我任何地方.. 我已经搜索了错误并尝试了几件事,但没有任何帮助。 有人说通过更新来消除错误..或者通过在sass-rails gem之前添加sprockets gem。 我的项目设置如下: 带有gem的常规rails 4 app,其中包含代表模板的资产。 我使用以下行来确保编译所有内容: config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.css *.js *.eot *.woff *.ttf *.svg) 谁知道如何解决这个问题,或者如何调试它? […]

MRI Ruby的并发请求

我把一个简单的例子放在一起,尝试使用一个基本的例子来certificateRails中的并发请求。 请注意,我使用的是MRI Ruby2和Rails 4.2。 def api_call sleep(10) render :json => “done” end 然后我在我的Mac(I7 / 4 Core)上的Chrome中找到4个不同的选项卡,看看它们是以串行还是并行方式运行(真正并发的是关闭但不是同一个东西)。 即, http:// localhost:3000 / api_call 我不能使用Puma,Thin或Unicorn来使用它。 每个请求都是串联的。 10秒后的第一个标签,20个之后的第二个标签(因为它必须等待第一个完成),之后是第三个…. 从我所读到的,我相信以下是真实的(请纠正我)并且是我的结果: Unicorn是多进程的,我的例子应该有效(在定义unicorn.rb配置文件中的worker数量之后),但事实并非如此。 我可以看到4名工人开始,但一切都在串联。 我正在使用unicorn-rails gem,使用unicorn -c config / unicorn.rb启动rails,在我的unicorn.rb中我有: – unicorn.rb worker_processes 4 preload_app true timeout 30 listen 3000 after_fork do |server, worker| ActiveRecord::Base.establish_connection end Thin和Puma是multithreading的(虽然Puma至少有一个’ 集群 ‘模式,你可以使用-w参数启动worker)并且不应该使用MRI Ruby2.0无论如何(在multithreading模式下),因为“有一个全局解释器锁(GIL)确保一次只能运行一个线程“。 所以, 我有一个有效的例子(或使用睡眠错误)? […]

为什么安全导航比在Rails中使用try更好?

我正在读这个 。 使用它有什么好处: user&.address&.state 过度 user.try(:address).try(:state) 我仍然没有得到它。

在rails 4中重构一个大的routes.rb文件

我正在将rails 3应用程序升级到rails 4.0.1。 在我的rails 3应用程序中,我在application.rb中使用以下代码来使用多个路由文件。 config.paths [“config / routes”] + = Dir [Rails.root.join(’config’,’routes’,’* .rb’)。to_s] 但是当我尝试在rails 4中使用相同的东西时抛出exception。 有小费吗?

在multithreadingRails环境中使用Redis的最佳方法是什么? (Puma / Sidekiq)

我在我的应用程序中使用Redis,包括Sidekiq队列和模型缓存。 考虑到将从我的Web应用程序(通过Puma运行)和Sidekiq内部的后台作业调用将要访问Redis的模型,我的模型可以使用Redis连接的最佳方法是什么? 我目前在初始化器中执行此操作: Redis.current = Redis.new(host: ‘localhost’, port: 6379) 然后在整个代码中使用Redis.current.get / Redis.current.set (和类似的)… 据我所知,这应该是线程安全的,因为Redis客户端只使用Monitor一次运行一个命令。 现在,Sidekiq有自己的Redis连接池,并建议这样做 Sidekiq.redis do |conn| conn.get conn.set end 据我所知,这比仅使用Redis.current的方法更好,因为当他们命中Redis时,多个线程上没有多个工作线在一个连接上相互等待。 但是,如何才能将我从Sidekiq.redis获得的这种连接提供给我的模型? (无需在每个方法调用中将其作为参数传递) 我无法在该块中设置Redis.current,因为它是全局的,我回到每个人使用相同的连接(以及它们之间随机切换,甚至可能是非线程安全的) 我应该将从Sidekiq.Redis获得的连接存储到Thread-local变量中,并在任何地方使用该线程局部变量吗? 在那种情况下,我在“Puma”环境中做了什么? 如何设置线程局部变量? 对此有任何想法非常感谢。 谢谢!

accepts_nested_attributes_for rails 4未删除

我现在已经阅读和研究了大约3天。 这是我的最后一招。 land.rb: has_many :uploads , :dependent => :destroy accepts_nested_attributes_for :uploads, :allow_destroy => true,:reject_if => :all_blank upload.rb belongs_to :land _land_form_partial.html.erb {:multipart => true} do |f| %> Delete: #… buttons and other fields lands_controller.rb def update if @land.update_attributes(land_params) flash[:success] = “Land updated” redirect_to lands_path else flash[:alert] = @land.errors.full_messages.first redirect_to edit_land_path end end def land_params params.require(:land).permit( uploads_attributes: […]

如何在Rails 4中缩小CSS?

我尝试了以下内容,但是我看看CSS源代码并没有缩小! 我重启了服务器几十次。 我在浏览器中关闭了缓存。 我也试过’yui-compressor’gem。 配置/环境/ development.rb config.assets.debug = false config.assets.css_compressor = :sass config.assets.compile = true 的Gemfile group :assets do # Add any compass extensions here # Use SCSS for stylesheets gem ‘sass-rails’, ‘~> 4.0.0’ 参考 http://edgeguides.rubyonrails.org/asset_pipeline.html#customizing-the-pipeline 版 WEBrick 1.3.1,ruby 2.0.0(2013-06-27)[i386-mingw32],Rails 4.0.3

更改活动模型序列化器默认适配器

如果我想从默认属性适配器切换到json api适配器,我会在哪里这样做? 入门指出: 一般来说,作为AMS的用户,您将编写(或生成)这些序列化程序类。 如果要使用其他适配器(例如JsonApi),可以在初始化程序中更改它: ActiveModel::Serializer.config.adapter = :json_api 他们指的是什么初始化器? 我会创建一个新的吗? 抱歉,这个菜鸟问题