我最近每次更改代码时都开始重新启动开发服务器.我的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的问题.
我正在使用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用户.
鉴于以下课程:
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#a和Foo#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上测试过
我有一个叫做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.
我有一些方法可以添加到Array我的Rails应用程序的Ruby 类中.放置它们的最佳位置在哪里?
现在我在config/environment.rb中有它们.
我想从字符串中获取数字,例如:
person_3
person_34
person_356
city_4
city_15
等等...
在我看来,以下应该工作:
string[/[0-9]*/]
但这总是吐出一个空字符串.
当我从数组中收集值时,我喜欢使用这个ruby成语:
users.collect &:email
Run Code Online (Sandbox Code Playgroud)
但是当我想加入这些值时,我最终必须像这样扩展它:
users.collect { |user| user.email }.join(", ")
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?