Tag: 常量

缺少一个恒定的负载..我怎么能绕过这个?

我刚刚为rails 2.3.5 Spree项目安装了bundler。 在这样做之后,我意识到当我去script/console时我收到了这个错误: Loading development environment (Rails 2.3.5) /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:in `const_missing’:NameError: uninitialized constant Rails::Plugin::OpenID 我的Gemfile: gem ‘ruby-openid’, ‘2.1.8’ 我运行bundle install没有错误。 >> gem list -d ruby​​-openid *** LOCAL GEMS *** ruby-openid (2.1.8, 2.1.2) Author: JanRain, Inc Homepage: http://github.com/openid/ruby-openid Installed at (2.1.8): /Library/Ruby/Gems/1.8 (2.1.2): /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 完整的Backtrace /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:in `const_missing’: uninitialized constant Rails::Plugin::OpenID (NameError) from /Users/macuser/Sites/test/spree/vendor/plugins/open_id_authentication/init.rb:16:in `evaluate_init_rb’ from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/callbacks.rb:182:in […]

设计可邀:未初始化的常量

我正在使用设计,工作正常,现在我尝试使用devise_invitable。 我正确安装了它,但是当我尝试访问时出现错误 HTTP://本地主机:3000 /用户/邀请/新 错误是: Started GET “/users/invitation/new” for 127.0.0.1 at 2011-07-06 20:47:07 -0300 ActionController::RoutingError (uninitialized constant Users): Rendered /Users/Fernando/.rvm/gems/ruby-1.9.2-head/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.9ms) The routes looks like ok, and I dont know why it return this error. 路线: accept_user_invitation GET /users/invitation/accept(.:format) {:action=>”edit”, :controller=>”devise/invitations”} user_invitation POST /users/invitation(.:format) {:action=>”create”, :controller=>”devise/invitations”} new_user_invitation GET /users/invitation/new(.:format) {:action=>”new”, :controller=>”devise/invitations”}

Rails:Active Record销毁时未初始化的常量错误

我在尝试销毁活动记录实例时遇到问题。 它涉及以下AR class Client :destroy has_many :email_addresses, :dependent => :destroy has_many :user_clients , :dependent => :destroy has_many :users, :through => :user_clients end class UserClient :destroy has_many :instructions, :dependent => :destroy end 在客户端实例上执行销毁时,我收到以下错误 @dead_man = Client.find(params[:id]) @dead_man.destroy => uninitialized constant UserClient::Instruction 我真的不确定这个错误来自哪里。 任何帮助是极大的赞赏!

如何在Rails 4中存储自定义常量?

我为电子邮件,bitmessage等制作了一些正则表达式,并将它们作为常量 #config/initializers/regexps.rb REGEXP_EMAIL = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[az]{2,})\z/i REGEXP_BITMESSAGE = /\ABM-[a-zA-Z1-9&&[^OIl]]{32,34}\z/ 并使用它 if @user.contact =~ REGEXP_EMAIL elsif @user.contact =~ REGEXP_BITMESSAGE 这是好习惯吗? 存储它们的最佳方法是什么?

使用命名空间类时解决“NameError未初始化常量”的麻烦?

我正在使用rails v3.2.2。 我有两个类如下: # app/models/article/category/article_relationship.rb class Article::Category::ArticleRelationship < ActiveRecord::Base … end # app/models/comment/category/article_relationship.rb class Comment::Category::ArticleRelationship < ActiveRecord::Base … end # app/models/article/category.rb class Article::Category < ActiveRecord::Base … end # app/models/article.rb class Article < ActiveRecord::Base … end 如果在我的视图文件中我说 ::Article::Category::ArticleRelationship # or Article::Category::ArticleRelationship 我收到以下错误: NameError uninitialized constant Category::ArticleRelationship 我该如何解决这个问题? UPDATE 当我同时在同一个文件中声明多个命名空间类时,我发现问题“大部分”发生,例如: ::Article::Category::ArticleRelationship ::Article::Category # or ::Comment::Category::ArticleRelationship ::Article::Category # […]

Ruby模块,带有来自includer类的静态方法调用

我需要在模块中定义使用包含此模块的类中的方法的常量: module B def self.included(base) class << base CONST = self.find end end end class A def self.find "AAA" end include B end puts A::CONST 但是编译器会在第4行给出错误。 有没有其他方法来定义常量?

我可以使用Forwardable在Ruby中委托一个常量吗?

鉴于以下类: class Thing CONSTANT = 10 # other code end 而另一个像: class Other def initialize @thing = Thing.new end def method puts CONSTANT end end 是否有可能将Forwardable扩展到拥有Other CONSTANT委托给Thing的常数? 我试过像这样扩展SingleForwardable (参见这里的文档): class Other extend SingleForwardable def initialize @thing = Thing.new end def method puts CONSTANT end def_single_delegator :@thing, :CONSTANT end 和: def_single_delegator :@thing, :constant 但是没有用,我的语法错了吗? 如果没有,还有另一种方式吗?

(在Ruby中)允许混合类方法访问类常量

我有一个定义了常量的类。 然后我定义了一个访问该类常量的类方法。 这很好用。 一个例子: #! /usr/bin/env ruby class NonInstantiableClass Const = “hello, world!” class << self def shout_my_constant puts Const.upcase end end end NonInstantiableClass.shout_my_constant 我的问题出现在尝试将此类方法移出到外部模块,如下所示: #! /usr/bin/env ruby module CommonMethods def shout_my_constant puts Const.upcase end end class NonInstantiableClass Const = “hello, world!” class << self include CommonMethods end end NonInstantiableClass.shout_my_constant Ruby将该方法解释为从模块而不是类中请求常量: line 5:in `shout_my_constant’: uninitialized […]

如何判断是否已在模块命名空间中定义了Constant,而不是全局命名空间?

我有两个同名的Const; 一个是全局const,另一个是在命名空间Admin下定义的。 但是我需要区分它们;全局的已经定义了,如果还没有定义,则需要自定义范围: A = ‘A Global Const’ module Admin A = ‘A Const within the Admin namespace’ if const_defined? ‘A’ # always true and the Admin::A can never be defined! end puts A # => ‘A Global Const’ puts Admin::A # => NameError: uninitialized constant Admin::A # the Admin::A will never be defined. 但是如果定义了全局A,那么“const_defind?” […]

在Ruby中,模块中定义的类如何知道模块的常量?

我试图理解模块中定义的类如何知道模块的常量。 这是我的意思的一个例子: module Car class Wheel end class Seat p Wheel # Car::Wheel end end 我知道这很明显,但由于Wheel在Seat的层次结构中无处可去,我不明白它是如何访问它的。