gpt4 book ai didi

ruby-on-rails - 为什么我本地编辑的 gem 中的某些方法没有出现在我的 Rails 控制台中?

转载 作者:数据小太阳 更新时间:2023-10-29 08:46:04 25 4
gpt4 key购买 nike

我在我的 Rails 项目中使用一个 gem,我正在本地修改这个 gem。

在我的 Gemfile 中,我有:

gem 'ancestry', path: '/Users/me/.rvm/gems/ruby-2.1.5@test_tree_app/bundler/gems/ancestry-eb5a3e448112'

当我运行 bundle 时,我得到了这个:

Using ancestry 2.1.4 from source at /Users/me/.rvm/gems/ruby-2.1.5@test_tree_app/bundler/gems/ancestry-eb5a3e448112

我打开了这个文件并在其中添加了以下两个方法:

def parents=(parents)
write_attribute(self.base_class.ancestry_column,
if parents.nil?
nil
else
parents.map(&:child_ancestry)
end
)
end

def test_method
"test"
end

请暂时忽略缩进,这样更容易阅读。

无论如何,在我的 Rails 控制台中,当我尝试访问这两种方法时,它们都不存在。

具体来说,tab complete 向我展示了这个:

4] pry(main)> r
=> #<Node id: 36, family_tree_id: 2, created_at: "2015-01-28 23:19:28", updated_at: "2015-01-28 23:19:28", name: "Mesty", ancestry: "13/35", ancestry_depth: 0, max_tree_depth: 0>
[5] pry(main)> r.p
r.parent= r.persisted? r.pretty_print_instance_variables
r.parent_id r.pluralize_table_names r.previous_changes
r.parent_id= r.pluralize_table_names? r.primary_key_prefix_type
r.parent_ids r.populate_with_current_scope_attributes r.primary_key_value
r.parents r.presence r.private_methods
r.partial_writes r.presence_in r.protected_methods
r.partial_writes? r.present? r.pry
r.path r.pretty_inspect r.psych_to_yaml
r.path_conditions r.pretty_print r.public_method
r.path_ids r.pretty_print_cycle r.public_methods
r.perform_validations r.pretty_print_inspect r.public_send
[5] pry(main)> r.t
r.table_name_prefix r.to_json_with_active_support_encoder r.toggle
r.table_name_prefix? r.to_json_without_active_support_encoder r.toggle!
r.table_name_suffix r.to_key r.touch
r.table_name_suffix? r.to_model r.transaction
r.taint r.to_param r.transaction_include_any_action?
r.tainted? r.to_partial_path r.transaction_record_state
r.tap r.to_query r.trust
r.time_zone_aware_attributes r.to_s r.try
r.timestamped_migrations r.to_xml r.try!
r.to_enum r.to_yaml
r.to_json r.to_yaml_properties

请注意,test_methodparents= 都没有列在我的控制台的可用方法列表中。

我已经退出控制台,再次运行 bundle 并重新打开控制台,但没有任何进展。

最佳答案

Rails 4.1 附带 Spring ,一个缓存某些文件(包括 Gem)的应用程序预加载器。

您可以手动停止 Spring 以强制刷新所有文件:

$ spring stop
$ rails c

关于ruby-on-rails - 为什么我本地编辑的 gem 中的某些方法没有出现在我的 Rails 控制台中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28232604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com