小编mui*_*bot的帖子

为什么Rails不会在每个请求上刷新类(尽管配置)?

我最近每次更改代码时都开始重新启动开发服务器.我的development.rb文件仍然有这一行:

config.cache_classes = false

我尝试使用调试器验证此值是否已停留.为此,我将配置设置为environment.rb中的全局变量:

$my_initializer = Rails::Initializer.run do |config|
  ...
end

然后我debugger在我的一个控制器中放了一条线,所以我可以这样做:

(rdb:2) $my_initializer.configuration.cache_classes
false

这样就消除了将价值cache_classes设定在true其他地方的可能性.我已经尝试过使用Mongrel和WEBrick,但它仍然会发生.

还有什么可能导致Rails不能在每次请求时重新加载我的代码?

我正在运行:Mongrel 1.1.5
WEBrick 1.3.1
Rails 2.3.8
Ruby 1.8.7 p253

编辑:在@Daemin的建议下,当我将它们保存在我的文本编辑器(Textmate)中时,我检查了我的文件的mtime实际上是否正在更新

merced:controllers lance$ ls -l people_controller.rb 
-rwxr-xr-x  1 lance  staff  2153 Act 10 18:01 people_controller.rb

然后我做了一个更改并保存了文件:

merced:controllers lance$ ls -l people_controller.rb 
-rwxr-xr-x@ 1 lance  staff  2163 Oct 11 12:03 people_controller.rb

所以这不是mtimes的问题.

ruby-on-rails ruby-on-rails-2

14
推荐指数
3
解决办法
4209
查看次数

apache说我的DocumentRoot目录不存在

我正在使用Phusion Passenger在CentOS 5.5上使用apache2部署rails应用程序.出于某种原因,我在启动apache时不断收到此消息:

> service start httpd
Starting httpd: Warning: DocumentRoot [/home/deploy/my_app/public] does not exist
[ OK ]

该目录肯定存在.以下是我配置中的一些重要文件:

/etc/httpd/conf/httpd.conf
...
用户部署
组部署
...

/etc/httpd/conf.d/my_app.conf
< VirtualHost *:80>
    ServerName my_app.com
    DocumentRoot /home/deploy/my_app/public
    < Directory /home/deploy/my_app/public>
        Allow from all
        Options -MultiViews
    < /Directory>
< /VirtualHost>

目录/ home/deploy,/ home/deploy/my_app和/ home/deploy/my_app/public都属于deploy用户.

ruby-on-rails apache2 passenger

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

为什么不能使用符号来调用受保护的方法?

鉴于以下课程:

class Foo
  def a
    dup.tap { |foo| foo.bar }
  end

  def b
    dup.tap(&:bar)
  end

  protected

  def bar
    puts 'bar'
  end
end
Run Code Online (Sandbox Code Playgroud)

好像都Foo#aFoo#b应该是等价的,但它们不是:

> Foo.new.a
bar
 => #<Foo:0x007fe64a951ab8>

> Foo.new.b
NoMethodError: protected method `bar' called for #<Foo:0x007fe64a940a88>
Run Code Online (Sandbox Code Playgroud)

是否有一个原因?这是一个错误吗?

在Ruby 2.2.3p173上测试过

ruby

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

如何在Rails中将update_attributes与自定义setter方法一起使用?

我有一个叫做Contact带有属性的模型phone_number.我有一些自定义的setter方法,如

def prefix=(num)  
  self.phone_number[3..5] = num  
end
Run Code Online (Sandbox Code Playgroud)

当我打电话时@contact.update_attributes({:prefix => '510'}),我没有得到任何错误并且@contact被更改,但是更改不会进入数据库.我已经尝试使用attr_accessible特别允许使用这些setter方法无济于事.

有办法update_attributes为我工作吗?我正在使用Rails 2.3.8.

activerecord attributes ruby-on-rails

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

在Rails中扩展内置类功能的最佳位置在哪里?

我有一些方法可以添加到Array我的Rails应用程序的Ruby 类中.放置它们的最佳位置在哪里?

现在我在config/environment.rb中有它们.

ruby-on-rails

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

如何使用ruby正则表达式获取子字符串?

我想从字符串中获取数字,例如:

person_3
person_34
person_356
city_4
city_15

等等...

在我看来,以下应该工作:

string[/[0-9]*/]

但这总是吐出一个空字符串.

ruby regex string substring

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

有没有更好的方法来收集和加入Ruby中的值?

当我从数组中收集值时,我喜欢使用这个ruby成语:

users.collect &:email
Run Code Online (Sandbox Code Playgroud)

但是当我想加入这些值时,我最终必须像这样扩展它:

users.collect { |user| user.email }.join(", ")
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

ruby

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