Tag: ruby在轨道 3

耙db:迁移似乎没有生产

我有两个应用程序实例:一个用于开发,一个用于生产。 我的开发数据库被称为snip_development ,我的生产数据库被称为snip 。 我一直在我的开发环境中进行迁移,并且一直很好。 我最近创build了我的应用程序的生产实例,但rake db:migrate似乎没有任何影响。 运行rake db:migrate并login到我的数据库服务器,我可以看到snip_development拥有我期望的所有表,但snip根本没有任何表。 我怀疑问题是rake db:migrate正在snip_development而不是snip上运行,这就是为什么我没有看到任何事情发生。 如何让我的迁移工作在我的生产数据库上?

Rails 3 SSL路由从httpsredirect到http

这个问题涉及到这个问题和答案(rails-3-ssl-deprecation) ,其中build议使用routes.rb和路由如下处理rails 3中的ssl: resources :sessions, :constraints => { :protocol => "https" } # Redirect /foos and anything starting with /foos/ to https. match "foos(/*path)", :to => redirect { |_, request| "https://" + request.host_with_port + request.fullpath } 我的问题是,链接使用相对path(我认为这是正确的术语),一旦我在一个https页面上的所有其他网站的其他链接,然后使用https。 1)什么是最好的方式返回http页面不需要HTTPS? 我必须设置所有的redirect(我希望注意)还是有更好的方法。 redirect是这样的: match "foos(/*path)", :to => redirect { |_, request| "http://" + request.host_with_port + request.fullpath } 2)如果redirect到http是必需的,那么我如何处理一个我希望所有方法都是http的情况? […]

Rails:每个环境初始化器?

我想在我的初始化程序(在config/initializers/ )中的代码只能运行在:development环境中,但不能运行:test或:production 。 什么是最好的方式来做到这一点? 将它粘贴到config/environments/test.rb似乎不太if Rails.env == 'development' do … end ,我不太喜欢将整个初始化文件包装在一个if Rails.env == 'development' do … end语句中。 有没有一些规范的方法来做到这一点? (背景:为了加快testing加载时间,我试图将Barista的gem移到我的Gemfile :development组中,但config/initializers/barista_config.rb调用Barista.configure ,所以现在它在testing中扼杀(和生产)模式。)

Rake任务中未初始化的常量

这是设置: 新的Rails应用程序,然后把这个test_rake.rake在lib / tasks: task :testclass do HelloClass.hello end` 把hello_class.rb放在app / models或者lib /中,用这行: config.autoload_paths += %W(#{config.root}/lib)添加到config.rb class HelloClass def self.hello puts 'hello_class' end end 耙testing类给出这个错误: /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing' /Users/name/Sites/Rails/indexapp/lib/tasks/test_class.rake:5:in `block (2 levels) in <top (required)>' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:636:in `call' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:636:in `block in execute' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:631:in `each' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:631:in `execute' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:597:in `block in invoke_with_call_chain' /Users/name/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' /Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2051:in […]

捆绑安装和rbx-require-relative

以下railstutorial.org后,我试图运行bundle install 。 它列出使用gem像: Using railties (3.0.7) Using rails (3.0.7) Using sass (3.1.3) 而这个错误: Installing rbx-require-relative (0.0.5) /home/canard/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:364:in `ensure_required_ruby_version_met': rbx-require-relative requires Ruby version ~> 1.8.7. (Gem::InstallError) from /home/canard/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:135:in `install' … 我明白ruby 1.9.2需要rbx-require-relative,但是为什么它不想安装它。 它要求rubyruby1.8.7。 我有点迷路。 进一步更多的这个错误后,它停止,我的Gemfile中的gem从来没有读取或安装… 我使用ruby1.9.2p180和轨道3.0.7 谢谢你的帮助

仅当另一个字段为空时validation字段的存在 – Rails

我有一个手机/手机号码和家庭电话号码的表格。 如果电话号码留空,我只希望validation是否存在手机/手机号码,反之亦然。 我目前对这些领域的validation如下。 validates_presence_of :mobile_number validates_presence_of :home_phone validates_length_of :home_phone, :minimum => 12, :maximum => 12 validates_length_of :mobile_number, :minimum => 10, :maximum => 10, :allow_blank => true validates_format_of :home_phone, :with => /\A[0-9]{2}\s[0-9]{4}\s[0-9]{4}/, :message => "format should be 02 9999 9999" 我以为我可以有以下的东西,但不知道如何做到这一点。 validates_presence_of :mobile_number, :unless => :home_phone.blank? 我正在使用Rails 3。

访问助手从邮件?

我试图从rails 3邮件程序访问帮助程序方法,以访问会话的当前用户。 我把助手:应用程序在我的邮件类,似乎工作,除了在其中定义的方法不可用我的邮件(我得到未定义的错误)。 有谁知道这应该如何工作? 这是我的class级: class CommentMailer < ActionMailer::Base default :from => "Andre Fournier <andre@gfournier.com>" helper :application end 谢谢,肖恩

请从Capistrano配方中请求此文件(LoadError)

我正在使用Capistrano 2与Rails 3项目。 最近我重新构build了我的gemset表单,现在当我尝试运行rails服务器时,收到错误“请从Capistrano配方(LoadError)中请求此文件”。 详细的错误信息: /Users/leonidlukin/.rvm/rubies/ruby-1.9.3-p429/bin/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/leonidlukin/Sites/moscowshows/script/rails server -b 0.0.0.0 -p 3000 -e development /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/capistrano-2.15.5/lib/capistrano/configuration/loading.rb:18:in `instance': Please require this file from within a Capistrano recipe (LoadError) from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/rvm-capistrano-1.5.6/lib/rvm/capistrano/helpers/base.rb:16:in `rvm_with_capistrano' from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/rvm-capistrano-1.5.6/lib/rvm/capistrano/helpers/_cset.rb:3:in `<top (required)>' from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require' from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require' from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency' from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require' from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/rvm-capistrano-1.5.6/lib/rvm/capistrano/base.rb:1:in `<top (required)>' from /Users/leonidlukin/.rvm/gems/ruby-1.9.3-p429@moscowshows/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in […]

我们可以从视图中调用Controller的方法吗(就像我们从理想的帮助者那里调用的那样)?

那么,我知道这不应该在这里问,但我没有find一个更好的地方得到答案。 这个问题在一个好公司的采访中被问到。 在Rails MVC中,你可以从视图中调用一个控制器的方法(如我们从理想的帮助者调用)? 如果是的话,怎么样? 那个时候我无法回答那个问题。 你能帮忙吗?

Rails 3分页,will_paginate与Kaminari

我的设置:Rails 3.0.9,Ruby 1.9.2 我正在为我的应用程序寻找一个分页解决scheme,并看到有一个新的ISHgemKaminari相比,值得信赖的will_paginate 。 它看起来像will_paginate没有更新一段时间,但从V3.0回来。 什么是共识,是一个优于对方,为什么? 提前感谢您的见解。 编辑 我在Twitter上问Ryan Bates,他说 两者同样做得好。 最大的因素是如果你使用任何需要分页的gem,因为它们不兼容。 我喜欢will_paginate的非引擎方法多一点,但这是个人喜好。