标签: rails-3-upgrade

将Rails应用程序从3.2.6升级到3.2.8

我有一个使用Rails创建的Rails应用程序3.2.6.现在3.2.8已经发布了,这是我需要做的更新应用程序吗?

  1. 编辑Gemfile,将行更改gem 'rails', '3.2.6'为gem'rails', '3.2.8'
  2. bundle update rails

那些其他Rails生成的条目Gemfile,例如sass-rails,coffee-railsuglifier

ruby-on-rails rails-3-upgrade

6
推荐指数
1
解决办法
1510
查看次数

将轨道2发电机转换为轨道3?

将轨道2发电机转换为轨道3有多困难?我一直在寻找有用的插件,但后来发现生成器只用于rails 2.我意识到它只是一个方便,但是如果将生成器迁移到rails 3就像调整生成器代码中的几行一样简单,我会只需这样做(并将工作提交给github以供将来的用户使用).

这是我一直在考虑使用的一个这样的发生器,例如(来自反馈)

require File.expand_path(File.dirname(__FILE__) + "/lib/insert_routes.rb")

class FeedbackFormGenerator < Rails::Generator::Base

  attr_accessor :name, 
    :model_class_name,
    :controller_class_name,
    :helper_class_name,
    :mailer_class_name


  def initialize(runtime_args, runtime_options = {})
    super
    @name = (runtime_args[0] || "feedback").downcase
    @model_class_name = name.classify
    @mailer_class_name = "#{@model_class_name}Mailer"
    @controller_class_name = "#{@model_class_name.pluralize}Controller"
    @helper_class_name = "#{@model_class_name.pluralize}Helper"
    #@js_framework = (runtime_options[''])

  end

  def manifest
    record do |m|

      puts "hello"
      add_model(m)
      add_mailer(m)
      add_controller(m)
      add_helper(m)
      add_views(m)
      add_routes(m)
      add_unit_test(m)
      add_functional_test(m)
      add_stylesheet(m)
      add_javascript(m)
      add_images(m)
    end
  end


  def add_stylesheet(m)
    m.directory 'public/stylesheets'
    m.file 'feedback.css', 'public/stylesheets/feedback.css'

  end

  def add_javascript(m)
    m.directory 'public/javascripts'
    file_name …
Run Code Online (Sandbox Code Playgroud)

code-generation ruby-on-rails generator ruby-on-rails-3 rails-3-upgrade

5
推荐指数
1
解决办法
819
查看次数

使用config.filter_parameters自定义过滤rails 3中的参数

我正在升级从Rails的2.3.11到3.0.10,和我有麻烦将是什么在ApplicationControllerfilter_parameter_logging.我想过滤某些参数,如果它们出现在像:referrer标签这样的值中,也会对它们进行过滤.

我可以在我的网站中过滤掉常规参数 application.rb

config.filter_parameters += [:password, :oauth, ...]
Run Code Online (Sandbox Code Playgroud)

但我遇到的问题是我们也在filter_parameter_logging中传递的块.它还会过滤掉任何看起来像网址的值中的参数,因此http://example.com?password=foobar&oauth=123foo&page=2会将其记录为http://example.com?password=[FILTERED]&oauth=[FILTERED]&page=2.我需要一种方法让rails既可以过滤指定的参数,也可以过滤掉其他值中的参数,就像上面的url一样.

这是filter_parameter_logging中的样子:

FILTER_WORDS = %{password oauth email ...} 
FILTER_WORDS_REGEX = /#{FILTER_WORDS.join("|")}/i

#Captures param in $1 (would also match things like old_password, new_password), and value in $2
FILTER_WORDS_GSUB_REGEX = /((?:#{FILTER_WORDS.join("|")})[^\/?]*?)(?:=|%3D).*?(&|%26|$)/i

filter_parameter_logging(*FILTER_WORDS) do |k,v|
  begin
    # Bail immediately if we can
    next unless v =~ FILTER_WORDS_REGEX && (v.index("=") || v.index("%3D"))

    #Filters out values for params that match
    v.gsub!(FILTER_WORDS_GSUB_REGEX) do
      "#{$1}=[FILTERED]#{$2}"
    end
  rescue Exception => …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3 rails-3-upgrade

5
推荐指数
1
解决办法
2706
查看次数

升级Rails应用程序从1.2.3升级到3.1.0?

我正在研究Rails 1.2.3版本.现在我想将Rails版本以及ruy版本从1.8.6升级到1.9.7.

使用这样的旧版本是一个很大的痛苦,但它处于运行状态.现在我想要Rails的高级功能但不支持这个旧版本.

请建议我升级版本和ruby版本的方法.

谢谢....

ruby-on-rails-3 rails-3-upgrade

5
推荐指数
1
解决办法
1154
查看次数

究竟哪些内容插入块助手在Rails 3中改变了行为?

Rails 3.0发行说明包括此更改:

7.4.2带有块的助手

帮助者喜欢form_for或者div_for插入块中的内容<%=现在使用:

<%= form_for @post do |f| %>
   ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

你自己的那种助手应该返回一个字符串,而不是手工附加到输出缓冲区.

做其他事情的助手,比如cachecontent_for,不受这种变化的影响,他们需要<%像以前一样.

我们正在将Web应用程序从Rails 2.3.18迁移到Rails 3.1.12,并且拥有已更改的这些帮助程序的完整列表非常有用,这样我们就可以检查它们的所有出现情况.我们的源代码,但我找不到这种权威列表.

我已经尝试查看rails项目的git历史记录,但似乎有许多相关更改的提交,并且它们显然没有分组在特定的分支上.例如,似乎很清楚这个清单包括:

  • form_for
  • form_tag
  • fields_for
  • field_set_tag

......来自7b622786f,

  • link_to

...在e98474096中提到并且:

  • div_for
  • content_tag_for

...在e8d2f48cff中提到

  • remote_form_for

....在0982db91f中提到,虽然它已在Rails 3中删除.

但是,我确信这还不完整 - 有人能提供完整的清单吗?

ruby-on-rails erb ruby-on-rails-3 rails-3-upgrade

5
推荐指数
1
解决办法
226
查看次数

如何在Rails 3中的功能测试中使用polymorphic_path

我正在尝试polymorphic_path在Rails 3中使用功能测试.

起初我会得到

NoMethodError: undefined method `polymorphic_path' for #<ArticlesControllerTest:0x492f17c>
Run Code Online (Sandbox Code Playgroud)

然后我补充道

include Rails.application.routes.url_helpers
Run Code Online (Sandbox Code Playgroud)

undefined method error停止了,但现在常规路径,如article_path(article)例如停止工作:

NameError: undefined local variable or method `default_url_options' for #<ArticlesControllerTest:0x33ccbe0>
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/testing/assertions/routing.rb:175:in `method_missing'
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:102:in `url_options'
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:131:in `url_for'
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:195:in `article_path'
Run Code Online (Sandbox Code Playgroud)

我曾经能够通过包含在Rails 2中正常使用polymorphic_path

include ActionController::UrlWriter
Run Code Online (Sandbox Code Playgroud)

如何在Rails 3中使用它?

ruby ruby-on-rails functional-testing ruby-on-rails-3 rails-3-upgrade

4
推荐指数
1
解决办法
2561
查看次数

Rails 3 CSRF_meta_tag无法正常运行

我正在将我的应用程序从Rails 2.3升级到Rails 3.我读到我需要插入

<%= csrf_meta_tag%>

在我的布局中,我做了.不幸的是,当我使用ajax请求时,我一直在注销.经过一番研究后,我发现一种较旧的方法是添加

$j(document).ajaxSend(function(e, xhr, options) {
  var token =$j("meta[name='csrf-token']").attr("content");
  xhr.setRequestHeader("X-CSRF-Token", token);  
});
Run Code Online (Sandbox Code Playgroud)

在我的application.js文件中.它现在正常工作(似乎我实际上不需要csrf_meta_tag).

这是正常的我不得不在我的application.js中添加这4行代码而不仅仅是csrf_meta_tag,或者我只是遗漏了什么?

ruby-on-rails-3 rails-3-upgrade

3
推荐指数
1
解决办法
3879
查看次数

如何在应用程序中更新rails

我有一个Rails 3.0.4应用程序,但我的服务器使用Rails 3.0.6

如何在我的应用程序中更新rails?

ruby-on-rails rails-3-upgrade

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

rails从版本2升级到3.未定义的方法`calendar_date_select_includes'

我正在使用calendar_date_select gem.

它在我的rails 2.3.x版本中运行良好.

但现在我正在尝试将其升级到3.0.10

真的卡在undefined method 'calendar_date_select_includes'所有页面的错误上.

Gemfile只有:

gem 'rails', '3.0.10'
gem 'mysql2', '~> 0.2.11'
gem "acts_as_list"
gem "simple_form"
gem "calendar_date_select"
gem "haml"
Run Code Online (Sandbox Code Playgroud)

我的views/layouts/application.html.haml页面有这个(注意:haml!)

%head
  = stylesheet_link_tag 'contam/default.scss'
  = stylesheet_link_tag 'main.css'
  = javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"
  = javascript_include_tag "jQueryUI/js/jquery-ui-1.8.11.custom.min.js"
  %script
    var $j = jQuery.noConflict();
  = javascript_include_tag :defaults
  = calendar_date_select_includes "silver"
Run Code Online (Sandbox Code Playgroud)

我的样式也没有被加载.

ruby ruby-on-rails rails-3-upgrade

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

升级到Rails 3:<%=如果表达式%>引发错误

好好看一些播客,我已经看到在Rails 3中,我们需要<%= %>现在使用标签,而不是之前.但是只需将它放在我的application.html.erb文件中:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head></head>
<body>  
  <%= if true %>
true        
  <% end %>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

不会像我预期的那样呈现'真实'.相反,我得到一个错误:

Showing /app/views/layouts/application.html.erb where line #5 raised:

/app/views/layouts/application.html.erb:5: syntax error, unexpected ')', expecting keyword_then or ';' or '\n'
  ');@output_buffer.append= ( if true );@output_buffer.safe_concat('
                                       ^
/app/views/layouts/application.html.erb:7: syntax error, unexpected keyword_end, expecting ')'
');   end 
         ^
/app/views/layouts/application.html.erb:10: syntax error, unexpected keyword_ensure, expecting ')'
/app/views/layouts/application.html.erb:12: syntax error, unexpected keyword_end, expecting ')'
Extracted source (around line #5):

2: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails erb ruby-on-rails-3 rails-3-upgrade

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