Questions tagged «ruby-on-rails»

Ruby on Rails是一个用Ruby编写的开源全栈Web应用程序框架。它遵循流行的MVC框架模型,并以其“配置之上的约定”方法进行应用程序开发而闻名。

11
在Capistrano中部署Git子目录
我的主分支布局是这样的: / <-顶层 / client <-桌面客户端源文件 / server <-Rails应用 我想做的只是在我的目录中拉/ server目录deploy.rb,但是我似乎找不到任何方法。/ client目录很大,因此设置一个将/ server复制到/的钩子将无法很好地工作,它只需要拉下Rails应用程序即可。

8
我有一个Rails任务:应该使用脚本/运行器还是耙子?
对于临时的Rails任务,我们有一些实现的替代方案,其中主要的替代方案似乎是: script/runner some_useful_thing 和: rake some:other_useful_thing 我应该选择哪个选项?如果有明确的偏爱,那么我何时应该考虑使用另一个?如果从来没有,那么您为什么会认为它仍然存在于框架中而没有弃用警告?

3
Sinatra与Rails
我已经完成了Sinatra和Rails的一些示例,但是我很难确定哪些功能属于哪种技术。 通过使用Sinatra / Rails,我可以得到什么?仅仅是ActionPack / ActionView吗?如果我错了,请纠正我,但是我可以只使用Webrick / Mongrel并提供我的.erb文件,对吗?而且我可以在这些文件中使用ActiveRecord技术,并且仍然访问发布变量,会话状态和querystring变量,对吗? 所以,我要问的是,如果我从上述类似PHP的场景开始;Webrick + ERB + ActiveRecord,使用Sinatra有什么好处?通过使用Rails,我还能获得什么呢?

4
Rails:分部应该知道实例变量吗?
例如,瑞安·贝茨(Ryan Bates)的nifty_scaffolding edit.html.erb <%= render :partial => 'form' %> new.html.erb <%= render :partial => 'form' %> _form.html.erb <%= form_for @some_object_defined_in_action %> 这种隐藏状态使我感到不舒服,所以我通常喜欢这样做 edit.html.erb <%= render :partial => 'form', :locals => { :object => @my_object } %> _form.html.erb <%= form_for object %> 那么哪个更好:a)使局部变量访问实例变量,或者b)传递局部变量所需的所有变量? 到目前为止,我一直在选择b),但确实遇到了一些泡菜: some_action.html.erb <% @dad.sons.each do |a_son| %> <%= …

3
轨道是否与字符串“人性化”相反?
Railshumanize()为字符串添加了一种方法,该方法的工作方式如下(来自Rails RDoc): "employee_salary".humanize # => "Employee salary" "author_id".humanize # => "Author" 我想走另一条路。我有一个来自用户的“漂亮”输入,我想对其进行“去人性化”以写入模型的属性: "Employee salary" # => employee_salary "Some Title: Sub-title" # => some_title_sub_title 导轨对此有帮助吗? 更新资料 同时,我在app / controllers / application_controller.rb中添加了以下内容: class String def dehumanize self.downcase.squish.gsub( /\s/, '_' ) end end 有没有更好的放置位置? 解 谢谢fd提供的链接。我已经实施了推荐的解决方案。在我的config / initializers / infections.rb中,我在末尾添加了以下内容: module ActiveSupport::Inflector # …

3
如何使用Ruby 2.7.0修复Rails的警告消息
有人解决过这个问题Ruby 2.7.0吗? 我使用rbenv并安装了Ruby v2.7.0,然后使用创建了一个Rails项目Rails v6.0.2.1。 目前,通过运行 rails s rails s -u puma rails s -u webrick 服务器启动并为站点提供服务,但是在Console日志中,我看到两个警告消息: local:~/rcode/rb27$ rails s => Booting Puma => Rails 6.0.2.1 application starting in development => Run `rails server --help` for more startup options .rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; …


4
未定义的方法`transform_keys'加载Sidekiq网站
更新gem之后,它不会加载sidekiq网站,并显示以下错误: NoMethodError (undefined method `transform_keys' for <ActionDispatch::Request::Session:0x00005568df2a8710>): 更新的宝石是: selenium-webdriver 3.142.7 rack-protection 2.0.8.1 mime-types 3.3.1 mini_magick 4.10.1 image_processing 1.10.3 groupdate 4.3.0 friendly_id 5.3.0 faraday 0.17.3 http 4.3.0 public_suffix 4.0.3 rack 2.1.1 crass 1.0.6 i18n 1.7.1 minitest 5.14.0 ruby版本:ruby 2.6.0p0(2018-12-25修订版66547)[x86_64-linux] 完整的错误讯息

2
更新Amazon RDS SSL / TLS证书-Elastic Beanstalk
AWS最近宣布需要: 在2019年10月31日之前更新您的Amazon RDS SSL / TLS证书 我有一个托管有经典Elastic Beanstalk负载平衡器的Rails应用程序,该负载平衡器使用RDS连接到Postgres DB。 根据Amazon的要求步骤是: 从使用SSL / TLS加密与数据库实例的连接中下载新的SSL / TLS证书。 更新数据库应用程序以使用新的SSL / TLS证书。 修改数据库实例以将CA从rds-ca-2015更改为rds-ca-2019。 (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html) 由于我的负载均衡器是这样设置的(通过HTTP端口80(不是SSL)连接到我的EC2实例,这是否意味着我不需要遵循步骤1和2?只需遵循步骤3? 还是我必须下载更新的证书,然后手动将其安装/添加到我的负载均衡器或EC实例中?不知道该怎么做。

4
#<Bundler :: RubygemsIntegration:0x00005633f09a9000>的未定义方法'plain_specs'(NoMethodError)
我已经完成了一个工作项目,当我尝试运行该项目时rails db:migrate,终端要求安装“ Bundler 2”,因此我可以这样做。 现在,当我尝试执行此操作时rails db:migrate,出现以下错误: /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:84:in `setup': undefined method `plain_specs' for #&lt;Bundler::RubygemsIntegration:0x00005633f09a9000&gt; (NoMethodError) from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:124:in `check' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:131:in `&lt;top (required)&gt;' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:168:in `require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:178:in `require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems_executable_plugin.rb:4:in `block in &lt;top (required)&gt;' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:50:in `block in run' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:49:in `each' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:49:in `run' from …

3
是否可以在rails中有多个数据库连接池来进行切换?
一点背景 多年来,我一直在使用Apartment gem来运行多租户应用程序。现在最近有需要将数据库扩展到单独的主机,数据库服务器根本无法跟上(读和写都变得太多了)-是的,我将硬件扩展到最大(专用)硬件,64核,raid 10中的12 Nvm-e驱动器,384Gb ram等)。 我正在考虑按每个租户执行此操作(1个租户= 1个数据库连接配置/池),因为这是一种“简单”且有效的方式,可以在number-of-tenants不进行应用程序代码更改的情况下获得多达两倍的容量。 现在,我正在Rails 4.2 atm上运行,不久将升级到5.2。我可以看到Rails 6增加了对每个模型的连接定义的支持,但这并不是我真正需要的,因为我为20个租户中的每一个都有一个完全镜像的数据库架构。通常,我会针对每个请求(在中间件中)或每个后台作业(sidekiq中间件)切换“数据库”,但是目前这对于公寓的gem来说是微不足道的,因为它只是search_path在Postgresql中进行设置,而实际上并没有改变实际的连接。当切换到每租户托管策略时,我将需要根据请求切换整个连接。 问题: 我知道我可以完成ActiveRecord::Base.establish_connection(config)每个请求/后台工作-但是,正如我也了解的那样,这将触发进行全新的数据库连接握手,并在Rails中产生一个新的数据库池-对吗?我猜想对我的应用程序的每个请求都会产生这种开销,这会降低性能。 因此,我想知道是否有人可以从一开始就预建立多个(总共20个)数据库连接/池(例如,在应用程序启动时),然后根据每个请求在这些池之间进行切换?这样他的数据库连接已经建立并准备使用。 所有这些仅仅是一个糟糕的主意,我应该寻找一种不同的方法吗?例如1个应用实例=与一个特定租户的特定连接。或者是其他东西。

1
使用gem globalize,如何切换仅输入而不是整个页面的语言环境?
上下文:对于一个用于自行车租赁的Ruby on Rails应用程序,我正在使用gem globalize处理:description不同语言的输入。 当前状态:全球化实现有效,取决于我能够以description特定语言存储的语言环境。的输入:description是根据整个网页的语言环境来处理的。 这意味着此页面上的所有内容都必须更改语言才能以:description正确的语言存储。 另外,我也可以显示所有可用的语言环境并description为每个语言环境显示。(另请参见下面的注释代码)。 问题:我正在寻找一种方法,让用户只选择一种语言:description,然后:description以正确的语言保存而不更改整个网页的语言。 码 形成 &lt;div class="row"&gt; &lt;%# I18n.available_locales.each do |locale| %&gt; &lt;!-- &lt;h1&gt;&lt;%#= locale %&gt;&lt;/h1&gt; --&gt; &lt;%= f.globalize_fields_for locale do |ff| %&gt; &lt;div class="col-10"&gt; &lt;div class="form-group"&gt; &lt;label class="form-control-label text required" for="accommodation_category_description"&gt;Description&lt;/label&gt; &lt;div&gt;&lt;%= ff.text_area :description, :rows =&gt;"5", :cols =&gt;"30", class:"form-control is-valid text required" %&gt;&lt;/div&gt; &lt;/div&gt; …

1
如何在Rails 6中配置Jasmine?
如何在Rails 6环境(Webpack替换Java的资产管道)中配置Jasmine,以便可以测试为应用程序编写的Javascript模块? 我安装了茉莉花宝石ran rails generate jasmine:install并进行了编辑,jasmine.yml以指向我的Javascript源和规范的位置。 问题是我不能使用导入/导出语句。(例如,试图加载我的第一模块向测试结果在此错误在Chrome: Uncaught SyntaxError: Unexpected token 'export') 据我所知,我需要设置茉莉花来使用babel。但是,我在新的Rails 6布局中找不到如何执行此操作的说明。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.