问题标签 [ruby-on-rails]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
在 Rails 应用程序中实现“记住我”
我的 Rails 应用程序有一个带有“记住我”复选框的登录框。选中该框的用户即使在关闭浏览器后仍应保持登录状态。我通过将用户的 id 存储在用户的会话中来跟踪用户是否登录。
但是会话在 Rails 中作为会话 cookie 实现,它不是持久的。我可以让他们坚持:
但这似乎是一种 hack,这对于这种常见的功能来说是令人惊讶的。有没有更好的办法?
编辑
Gareth 的回答非常好,但我仍然希望熟悉 Rails 2 的人回答(因为它是独一无二的CookieSessionStore
)。
进行 HTTP 调用时,Ruby 中频繁的 SystemExit
我有一个 Ruby on Rails 网站,可以对外部 Web 服务进行 HTTP 调用。
大约每天一次,我收到一封 SystemExit(下面的堆栈跟踪)错误电子邮件,其中对服务的调用失败。如果我稍后在我的网站上尝试完全相同的查询,它就可以正常工作。自从该网站上线以来就一直在发生这种情况,我没有运气追踪到是什么原因造成的。
Ruby 是 1.8.6 版,rails 是 1.2.6 版。
其他人有这个问题吗?
这是错误和堆栈跟踪。
发生 SystemExit /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/fcgi_handler.rb:116:in exit' /usr/local/lib/ruby/gems/1.8/gems/ rails-1.2.6/lib/fcgi_handler.rb:116:in exit_now_handler' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/inflector.rb:250:in to_proc ' /usr/local/lib/ruby/1.8/net/protocol.rb:133:in call' /usr/local/lib/ruby/1.8/net/protocol.rb:133:in sysread' /usr/local/ lib/ruby/1.8/net/protocol.rb:133:in rbuf_fill' /usr/local/lib/ruby/1.8/timeout.rb:56:in timeout' /usr/local/lib/ruby/1.8/timeout. rb:76:in timeout' /usr/local/lib/ruby/1.8/net/protocol.rb:132:in rbuf_fill' /usr/local/lib/ruby/1.8/net/protocol.rb:116:in readuntil ' /usr/local/lib/ruby/1.8/net/protocol.rb:126:in readline' /usr/local/lib/ruby/1.8/net/http.rb:2017:在 read_status_line'/usr/local/lib/ruby/1.8/net/http.rb:2006:in read_new'/usr/local/lib/ruby/1.8/net/http.rb:1047:in request'/usr/ local/lib/ruby/1.8/net/http.rb:945:in request_get' /usr/local/lib/ruby/1.8/net/http.rb:380:in get_response' /usr/local/lib/ruby/ 1.8/net/http.rb:543:in start' /usr/local/lib/ruby/1.8/net/http.rb:379:in get_response'
如何使用 Rails 2.1 中的 ExceptionNotifier 插件修复“找到未处理的视图路径”错误?
将 rails 1.2 网站升级到 2.1 后,ExceptionNotifier 插件不再工作,抱怨此错误:
ActionView::TemplateFinder::InvalidViewPath:找到未处理的视图路径:“/path/to/appname/vendor/plugins/exception_notification/lib/../views”。使用#append_view_path、#prepend_view_path 或#view_paths= 设置视图路径。
是什么原因造成的,我该如何解决?
Ruby On Rails 与 Windows Vista - 最佳设置?
您认为在 Win Vista 环境中 RoR 的最佳设置是什么?我已经尝试了 radrails eclipse 插件,但它对我来说似乎太笨重了,我也开始只使用 Textpad 和命令行,但我已经习惯了使用一些 IDE。
使用 MySQL 而不是 SQLite 创建一个新的 Ruby on Rails 应用程序
我想用 MySQL 创建我的 Rails 应用程序,因为我非常喜欢它。如何在最新版本的 Rails 而不是默认的 SQLite 中做到这一点?
如何将 Python 推销给客户/老板/个人
当被要求创建系统 XYZ 并且您要求使用 Python 而不是 PHP 或 Ruby 时,当它们需要您解释时,您可以提及哪些主要功能?
学习 Ruby on Rails 对 Grails 有好处吗?
我的公司正在开始走Grails之路。原因是当前的开发人员对Java很感兴趣,但他们觉得未来一些 Web 开发项目需要一种MVC 风格的语言。就个人而言,我来自设计/可用性领域,但随着我承担更多“前端”职责,我开始觉得有必要更深入地学习一门语言,这样我就可以编写一些逻辑,尤其是前端我的 UI 和东西的代码。
我一直试图亲自进入Python/Django,但从来没有在它上面投入太多时间。现在我的公司正在“跳入”Grails,我购买了“ Agile Web Development with Rails (3rd Ed - Beta) ”,我开始进入RoR。我仍然想在未来或边上学习Python ,但我最大的问题是:
- 我是否应该学习 RoR,并在我的“投资组合”中使用更通用的语言,因为我知道我的 RoR 知识也会对我的 Grails 需求有用?
-或者-
- 我是否应该跳过 RoR 并专注于学习我很快需要工作的 Grails,然后继续学习 RoR/Django(Ruby/Python)?
基本上,问题围绕着 Grails 在非公司环境中的有用性以及 Rails 和 Grails 之间的相似之处。(还有这个,同时试图避免 Python 与 Ruby(在 Rails 上)的百年讨论 :))
Haml:如何设置动态类值?
我有以下 html.erb 代码,我希望将其移至 Haml:
它所做的是将当前分配状态的 CSS 类与 span 相关联。
这在 Haml 中是如何完成的?我确定我错过了一些非常简单的东西。
为什么所有 Active Record 都讨厌?
随着我对 OOP 的了解越来越多,并开始实施各种设计模式,我不断回想起人们讨厌Active Record的案例。
通常,人们说它不能很好地扩展(以 Twitter 为例)——但没有人真正解释为什么它不能很好地扩展;和/或如何在没有缺点的情况下实现 AR 的优点(通过类似但不同的模式?)
希望这不会变成一场关于设计模式的圣战——我想知道的只是****具体**** Active Record 出了什么问题。
如果它不能很好地扩展,为什么不呢?
它还有什么其他问题?
Ruby mixins 和调用超级方法
好的,所以我一直在我的小 Rails 应用程序中重构我的代码,以消除重复,总的来说让我的生活更轻松(因为我喜欢轻松的生活)。这种重构的一部分是将我的两个模型共有的代码移动到我可以包含在我需要的地方的模块中。
到现在为止还挺好。看起来它会成功,但我刚刚遇到了一个我不知道如何解决的问题。该模块(我称之为可发送的)只是处理传真、电子邮件或打印文档 PDF 的代码。因此,例如,我有一个采购订单,我有内部销售订单(想象地缩写为 ISO)。
我遇到的问题是,我希望在加载对象后初始化一些变量(为拼写不正确的人初始化 :P ),所以我一直在使用after_initialize钩子。没问题......直到我开始添加更多的mixin。
我遇到的问题是,我可以在我的after_initialize
任何一个 mixin 中都有一个,所以我需要在开始时包含一个super调用以确保调用其他 mixinafter_initialize
调用。太好了,直到我最终调用 super 并且我得到一个错误,因为没有 super 可以调用。
这是一个小例子,以防我不够混乱:
那么,如果每个 mixin 都有一个 after_initialize 调用,以及一个super调用,我怎样才能阻止最后一个super调用引发错误?如何在调用之前测试超级方法是否存在?