我在github上有一个rails repo的分支,其中我有一个分支,基于rails-2-3-stable分支.我想基于rails 2.3.10和我的应用程序开发一些更改.我们正在使用bundler,该应用程序版本为SVN.
在github的rails分支中使用我的分支并在机器之间共享的最简洁方法是什么?
一种方法是:
哪个会工作,但感觉不够干净,因为当repo改变时我们必须手动更新销售版本,我们必须检查git repo到svn.
我在Gemfile中尝试过这种变体:
gem 'rails', '2.3.10', :git => 'git://github.com/traveliq/rails.git', :branch => 'tiq-fixes'
gem 'rails', '2.3.10', :git => 'git://github.com/traveliq/rails.git', :tag => 'v2.3.10'
gem 'rails', '2.3.10', :git => 'git://github.com/rails/rails.git', :tag => 'v2.3.10'
Run Code Online (Sandbox Code Playgroud)
所有这些最初都在运行bundle install时工作,但在启动应用程序时,它无法在加载路径中找到rails:
/home/mt/Development/config/boot.rb:57:in `require': no such file to load -- initializer (LoadError)
from /home/mt/Development/config/boot.rb:57:in `load_initializer'
from /home/mt/Development/config/boot.rb:117:in `run'
from /home/mt/Development/config/boot.rb:11:in `boot!'
from /home/mt/Development/config/boot.rb:130
from script/console:2:in `re
我的Gemfile.lock条目是这样的:
GIT
remote: git://github.com/traveliq/rails.git
revision: 25139ac92cea5b17791d71359bc3ae2a5d526652
branch: tiq-fixes
specs:
rails (2.3.10)
...
DEPENDENCIES
... … 问题是:我使用的是第三方电子邮件递送服务,该服务不接受名称部分中包含非ASCII字符的邮件地址,例如müller@example.com.
用Punycode编码这样的地址:
http://en.wikipedia.org/wiki/Punycode
产生这个地址:
xn--mller-kva@example.com
通过该服务向其发送邮件似乎有效.
但是,我不确定是否有人无法直接注册"xn--mller-kva@example.com",因此接收的电子邮件意为"müller@example.com".
这可能会发生冲突吗?这个问题还有其他解决方案吗?
UPDATE
谢谢你的回答.以下是我们学到的内容摘要:
这与散列的Rails部分更新问题非常相似,但问题并没有真正得到回答恕我直言.
问题是:我有一个带序列化列的模型:
class Import < AR::Base
serialize :data
Run Code Online (Sandbox Code Playgroud)
在我的情况下,在第一次保存/创建模型后,这些数据将会,而且应该不会更改.所以我想禁用AR的功能,它始终保存序列化列(这通常是一个好主意,因为它无法检测到这些更改).我想禁用保存,因为数据可能非常大,模型将经常更新.
我已经尝试过monkeypatching到ActiceRecord :: AttributeMethods :: Dirty,如下所示:
class Import
def update(*)
if partial_updates?
super(changed | (attributes.keys & (self.class.serialized_attributes.keys - ["data"])))
else
super
end
end
Run Code Online (Sandbox Code Playgroud)
但这似乎没有效果.有人有更好的主意吗?
这是在Rails 3.0.12下