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

标签 ruby-on-rails ruby ruby-on-rails-4 bundler

我正在 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 控制台中,当我尝试访问这两种方法时,它们都不存在。

具体来说,选项卡完成显示了这一点:

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 ,一个缓存某些文件(包括 gems)的应用程序预加载器。

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

$ spring stop
$ rails c

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

相关文章:

ruby-on-rails - 用户友好的错误页面未在生产环境中显示

ruby-on-rails - 我如何判断是否使用了出售的 gem?

ruby-on-rails - rbenv 路径错误的 Rails Capistrano?

ruby-on-rails - 按多个唯一字段查找 Rails

mysql - rails : User specific sequential column

ruby-on-rails - Heroku “failed to compile Multipack app”

ruby-on-rails - 从多个其他人组合一个 Gemfile

ruby - 访问 Ruby 模块内的哈希值的最佳方式

ruby-on-rails - Neo4j 急切加载 ActiveRel

ruby-on-rails - 让用户可以选择从下拉菜单中选择或输入自己的内容并将其添加到表格中