【问题标题】:Ruby on Rails application crashes: Ruby.exe "The instruction at [address] referenced memory at [address]. The memory could not be "written"Ruby on Rails 应用程序崩溃:Ruby.exe “[address] 处的指令引用了 [address] 处的内存。无法“写入”内存
【发布时间】:2011-08-08 20:06:46
【问题描述】:

当我在本地运行我的 Ruby on Rails 应用程序时,它总是在一个特定页面上崩溃。每当我加载页面时,我都会从 Ruby.exe 收到以下错误:

[address] 处的指令引用了 [address] 处的内存。内存无法“写入”。

一旦发生此错误,服务器就会崩溃,我必须使用“rails s”重新启动。我尝试删除/注释掉各种部分和函数,以尝试判断是否是单个部分导致它,但我继续收到此错误。这发生在不同的浏览器(firefox 和 chrome)中。当我在本地主机上运行我的应用程序时发生崩溃。

我使用的是 ruby​​ 版本 1.9.2p290、Rails 3.0.9 和 Windows XP SP3。我的同事在相同的设置下遇到了同样的问题。我们都使用 Windows XP RubyInstaller 来安装 Ruby。当我开始收到此错误时,我再次下载并运行了安装程序,但这并没有解决问题。

有谁知道可能导致此错误的原因,或者我如何找出问题所在?如果需要,我可以发布更多代码。


在我们正在处理的 Web 应用程序的许多类似页面中,只有一个页面以这种方式崩溃。页面代码(edit.html.erb)如下:

<script type="text/javascript">
set_toolbar("projects", "<%= @project.id %>", "", "", "edit");
</script>

<%= render :partial => "sidebars/sidebar", :locals => {:curr_page => "info"} %>
<%= render :partial => "page_title", :locals => {:page_title => "Project Information"} %>

Use this form to modify your project, then click the "Save and Continue" button 
to follow the process shown at the right.

<br/><br/>

<%= render "projects/form" %>

<div id="add_keyquestion_box">
<%= render "key_questions/form" %>
</div>

<script type="text/javascript">

$("#add_keyquestion_box").dialog({
        autoOpen: false,
        minWidth: 600
    });

</script>

部分“projects/form”和“key_questions/form”都以完全相同的方式包含在类似的页面new.html.erb中,并且该页面不会崩溃。


更新:好的,所以在考虑这个问题并同时处理其他事情的同时,我们暂时从项目/表单部分和 key_questions/表单部分中删除了 CKEditor。虽然我之前尝试过这个(grrr),但这次似乎已经停止了崩溃。可能我上次删除它时不够彻底。

只要 CKEditor 存在于 new.html.erb 中,页面就会正常工作,数据也会正常保存。

但是当 CKEditor 存在于 edit.html.erb 中,并且表单中已经存在数据时,就会发生上述崩溃。这有时会在编辑器本身部分或完全加载之后发生,或者有时在编辑器完全加载之前发生。崩溃似乎与从数据库中提取信息以在 CKEditor 中显示以供编辑有关。

关于我们如何使用 CKEditor 的更多信息:在“项目/表单”部分中,在页面中创建了两个 CKEditor。 “key_questions/form”部分位于一个 jQuery 对话框中,当用户单击“projects/form”中包含的按钮时会出现该对话框。此按钮的功能包含在“项目/表单”中,如下所示:

<script type="text/javascript">
$("#add_kq_button").bind("click", function(event)
{
    event.preventDefault();
    $.ajax({
      url: 'key_questions/new',
      type: "POST",
      data: { project: <%= @project.id.nil? ?  -1 : @project.id %>}
    });
});
</script>

key_questions/new.js.erb 在 jQuery 中调用必要的对话框打开函数来打开关键问题表单对话框。

感谢您提供的任何建议!

【问题讨论】:

  • 您使用的是哪个版本的 Rails?哪个版本的 Ruby?哪个版本的 Windows?
  • 已更新以添加该信息,抱歉我忘记了!
  • 能否贴出与崩溃页面相关的代码?
  • 您是否使用rubyinstaller.org 安装了 ruby​​?Rails 不会导致此错误。我认为它来自一个糟糕的 ruby​​ 安装。
  • 您的生产设置是什么?每当我不得不在 Windows 上开发时,我总是让 vm 运行与服务器上相同的 linux,并通过共享在其上进行开发。 VMWare 播放器是免费的。

标签: ruby-on-rails ruby memory ckeditor


【解决方案1】:

您是否尝试过改用瘦服务器?如果你在 Gemfile 中添加瘦,运行 bundle install 然后运行 ​​bundle exec rails server thin -e development 然后你可能会发现许多崩溃问题消失了 - 我当然做到了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2011-06-05
    • 1970-01-01
    • 2011-04-20
    • 2021-02-14
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多