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

时间:2015-01-30 09:16:49

标签: 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并重新打开控制台并且无法到达任何地方。

1 个答案:

答案 0 :(得分:3)

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

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

$ spring stop
$ rails c