Tag: ruby on rails

在Ruby中重新实现ASP.NET成员资格和用户密码哈希

我有一个庞大的用户数据库(~200,000),我正在从ASP.NET应用程序转移到Ruby on Rails应用程序。 我真的不想让每个用户重置他们的密码,所以我试图在Ruby中重新实现C#密码散列函数。 旧function是这样的: public string EncodePassword(string pass, string saltBase64) { byte[] bytes = Encoding.Unicode.GetBytes(pass); byte[] src = Convert.FromBase64String(saltBase64); byte[] dst = new byte[src.Length + bytes.Length]; Buffer.BlockCopy(src, 0, dst, 0, src.Length); Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length); HashAlgorithm algorithm = HashAlgorithm.Create(“SHA1”); byte[] inArray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inArray); } 示例哈希密码和salt是(并且使用的密码是“password”): 哈希密码:“weEWx4rhyPtd3kec7usysxf7kpk =”盐:“1ptFxHq7ALe7yXIQDdzQ9Q ==”密码:“密码” 现在使用以下Ruby代码: require “base64” […]

访问嵌套哈希时如何避免nil元素的NoMethodError?

如果我尝试访问不存在的哈希元素,我会得到NoMethodError: undefined method ‘[]’ for nil:NilClass 。 但是,我无法预测哪些元素会出现。 @param_info = {} @param_info[“drug”][“name”] # => NoMethodError: undefined method `[]’ for nil:NilClass 当元素意外nil时,如何避免引发此错误?

Ruby:mysql2-Gem无法正常工作(Mac OS X Snow Leopard,Ruby 1.9.2)

我刚刚编译了ruby并安装了rubygems,mysql2和rails,它运行得很好。 但每当我尝试启动rails服务器时,我都会收到以下错误消息: /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in`requiret’:dlopen(/ usr / local / ruby​​ / lib / ruby /gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle,9):未加载库:libmysqlclient.18.dylib(LoadError)引用自:/ usr / local / ruby​​ / lib / ruby / gems / 1.9.1 / gems / mysql2-0.2.6 / lib / mysql2 / mysql2.bundle原因:找不到图像 – /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2- 0.2 / lib / mysql2 / mysql2.bundle来自/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in`’from / usr / local / ruby​​ / lib / ruby​​ […]

无法安装mysql2 gem

我无法在我的Windows7 x64系统中安装mysql2 gem。 我尝试使用32位和64位版本的MySQL服务器,但没有一个让我更进一步。 我安装了Ruby 1.8,开发工具包和Rails平台。 我甚至安装了minGW来允许C ++ / C编译。 MySQL Server安装在默认位置。 运行命令时: C:\Users\Arne>gem install mysql2 — –with-mysql-include=”C:\Program Files (x86)\MySQL\MySQL Server 5.1\include” –with-mysql-lib=”C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib\” 我从控制台收到以下输出: Temporarily enhancing PATH to include DevKit… Building native extensions. This could take a while… *** extconf.rb failed *** Could not create Makefile due to some reason, probably […]

如何在Rails 3中生成带尾部斜杠的链接?

我将现有的网站从PHP移植到Ruby on Rails 3,我必须保持url不变。 我有路线: get ‘companies/’ => ‘companies#index’, :as => :companies 在视图文件中我有: link_to ‘Companies’, companies_path 这会生成URL“http://website.com/companies”而不是“http://website.com/companies/”。 我希望url末尾有斜杠。 可能吗?

为什么String#gsub会双重内容?

s = “#main= ‘quotes’ s.gsub “‘”, “\\'” # => “#main= quotes’quotes” 这似乎是错误的,我希望得到”#main= \\’quotes\\'” 当我不使用转义字符时,它按预期工作。 s.gsub “‘”, “*” # => “#main= *quotes*” 所以必须与逃避有关。 使用ruby 1.9.2p290 我需要用反斜杠和引号替换单引号。 更多的不一致: “\\'”.length # => 2 “\\*”.length # => 2 # As expected “‘”.gsub(“‘”, “\\*”).length # => 2 “‘a'”.gsub(“‘”, “\\*”) # => “\\*a\\*” (length==5) # WTF next: “‘”.gsub(“‘”, “\\'”).length # => […]

在初始化程序中设置cache_store

我正在尝试使用redis-store作为我的Rails 3 cache_store。 我还有一个初始化器/ app_config.rb,它为配置设置加载一个yaml文件。 在我的初始化程序/ redis.rb中,我有: MyApp::Application.config.cache_store = :redis_store, APP_CONFIG[‘redis’] 但是,这似乎不起作用。 如果我做: Rails.cache 在我的rails控制台中,我可以清楚地看到它正在使用 ActiveSupport.Cache.FileStore 作为缓存存储而不是redis-store。 但是,如果我在application.rb文件中添加配置,如下所示: config.cache_store = :redis_store 它运行得很好,除了在app.rb之后加载app config初始化程序,所以我没有访问APP_CONFIG。 有没有人经历过这个? 我似乎无法在初始化程序中设置缓存存储。

使用has_many:通过和构建

我有三个模型,都是为了一个has_many:通过关系。 它们看起来像这样: class Company < ActiveRecord::Base has_many :company_users, dependent: :destroy has_many :users, through: :company_users accepts_nested_attributes_for :company_users, :users end class CompanyUser < ActiveRecord::Base self.table_name = :companies_users #this is because this was originally a habtm relationship belongs_to :company belongs_to :user end class User < ActiveRecord::Base # this is a devise model, if that matters has_many :company_users, dependent: […]

Rails Resque工作程序因PGError而失败:服务器意外关闭了连接

我在Ubuntu 9.10,Rails 2.3.4,ruby-ee 2010.01,PostgreSQL 8.4.2上有站点运行rails应用程序和resque worker在生产模式下运行 工人不断提出错误:PGError:服务器意外关闭了连接。 我最好的猜测是主resque进程建立与db的连接(例如authlogic在使用User.acts_as_authentic时执行此操作),同时加载rails app类,并且该连接在fork()ed进程中损坏(退出?),所以下一个分叉孩子们得到了一些破碎的全局ActiveRecord :: Base.connection 我可以使用此示例代码重现非常类似的行为,模仿resque worker中的fork / processing。 (AFAIK,libpq的用户建议无论如何都要在forked进程中重新创建连接,否则它不安全) 但是,奇怪的是当我使用pgbouncer或pgpool-II而不是直接的pgsql连接时,不会出现这样的错误。 那么,问题是我应该在哪里以及如何挖掘以找出为什么它被破坏以进行普通连接并且正在使用连接池? 还是合理的解决方法?

试图为ror app设置postgres,收到错误 – fe_sendauth:没有提供密码

获得: An error has occurred: Error connecting to the server: fe_sendauth: no password supplied database.yml中的设置与其他计算机上的应用程序设置相同。 如何设置以便我不需要硬编码的密码? 我可以使用PgAdmin-III查看db ok。 我宁愿没有database.yml的密码,因为使用这个应用程序的其他机器没有/需要它,所以它似乎可能与我的Pg安装有关。