上周我将Fedora升级到全新的28版本,其中mongodb升级到3.6.请参阅升级到Fedora 28后如何修复mongodb服务?因为我设法解决了我的第一个问题,即mongod将不再启动.现在我在使用同一个数据库的Rails应用程序上面临另一个问题.
这很可能与mongodb升级无关,但我认为值得提供上下文并且不要错过没有提供足够的上下文的解决方案.
因此,自系统升级以来,对此Rails项目的任何登录尝试都将失败BCrypt::Errors::InvalidHash in Devise::SessionsController#create
,并在bcrypt (3.1.11) lib/bcrypt/password.rb:60:ininitialize'`处引发错误.在项目的Rails控制台中进一步分析,似乎对此方法的任何调用都将失败:
> BCrypt::Password.create('TestPassword')
BCrypt::Errors::InvalidHash: invalid hash
from /home/psychoslave/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bcrypt-3.1.11/lib/bcrypt/password.rb:60:in `initialize'
Run Code Online (Sandbox Code Playgroud)
我试图bundle卸载/重新安装bcrypt,甚至使用bcrypt gem的github存储库版本,但它没有改变任何东西.
看/home/psychoslave/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bcrypt-3.1.11/lib/bcrypt/password.rb:60:in初始化'`,问题似乎哈希是无效的.
# Initializes a BCrypt::Password instance with the data from a stored hash.
def initialize(raw_hash)
if valid_hash?(raw_hash)
self.replace(raw_hash)
@version, @cost, @salt, @checksum = split_hash(self)
else
raise Errors::InvalidHash.new("invalid hash")
end
end
Run Code Online (Sandbox Code Playgroud)
相应的测试如下:
def valid_hash?(h)
h =~ /^\$[0-9a-z]{2}\$[0-9]{2}\$[A-Za-z0-9\.\/]{53}$/
end
Run Code Online (Sandbox Code Playgroud)
散列本身是通过BCrypt::Engine.hash_secret(secret, BCrypt::Engine.generate_salt(cost))在我使用调用的平台中 创建的__bc_crypt(secret.to_s, salt),它似乎调用了bcrypt-3.1.11/ext/mri/bcrypt_ext.c.
更重要的是binding.pry,在 …
在Fedora 28决定将mysql-community软件包升级到8.0(最新)之后,我意识到我的应用程序失败了,不得不降级到mysql 5.27.2
当然,我的数据库文件(.idb)是相同的(由mysql 8.0更改)。启动mysql 5.27服务时,它将失败。我已阅读日志文件/var/log/mysqld.log并发现以下内容:
InnoDB:数据字典中的表标志为0,但文件./ibdata1中的标志为0x4000!
我在 Fedora 28 系统上安装了以下 RPM 包:
ghc-ghc-8.2.2-66
ghc-containers-0.5.10.2-66
Run Code Online (Sandbox Code Playgroud)
根据hackage,设置模块应包含在给定的 RPM 中。然而试图import Data.Set导致
<no location info>: error:
Could not find module ‘Data.Set’
Perhaps you meant Data.Int (from base-4.10.1.0)
Run Code Online (Sandbox Code Playgroud)
我错过了要安装的东西吗?如何检查哪些模块可用?
编辑:
$ ghc-pkg list
/usr/lib64/ghc-8.2.2/package.conf.d
base-4.10.1.0
ghc-prim-0.5.1.1
integer-gmp-1.0.1.0
rts-1.0
Run Code Online (Sandbox Code Playgroud)
如何注册一个模块?