我在 Windows Server 2016 上安装了 MSYS2-64bits 以支持一些 Linux 库,例如 OpenSSL,这是我在 Ruby on Rails 开发中需要的。MSYS2 已随 Ruby 2.7 部分安装,但由于证书错误消息而未完成。
我首先下载并安装msys2-x86_64-20210725.exe。花了很长时间,在出现几条有关更新信任数据库的消息后完成:
==> Generating pacman master key. This may take some time.
==> Updating trust database...
==> Appending keys from msys2.gpg...
==> Locally signing trusted keys in keyring...
-> Locally signed 6 keys.
==> Importing owner trust values...
==> Disabling revoked keys in keyring...
-> Disabled 1 keys.
==> Updating trust database...
Run Code Online (Sandbox Code Playgroud)
这个阶段停留了大约10分钟,最终宣告安装成功。
然后我尝试通过运行pacman -Syuu来更新现有软件。我按照要求重新启动了MSYS2,输入了语句,然后反复出现如下错误:
$ pacman -Syuu
:: Synchronizing package databases... …Run Code Online (Sandbox Code Playgroud) 我将我的环境从Ruby 2.0.0升级到2.2.3.
我还升级(覆盖)DevKit,并重新运行ruby dk.rb install.
我删除了Gemfile.lock并运行bundle install以开始全新的环境.一切看起来都不错,但我收到错误:
E:\Projects\development\Stairs>rake db:migrate
rake aborted!
LoadError: cannot load such file -- bcrypt_ext
E:/Projects/development/Stairs/config/application.rb:7:in `<top (required)>'
E:/Projects/development/Stairs/Rakefile:4:in `<top (required)>'
LoadError: cannot load such file -- 2.2/bcrypt_ext
E:/Projects/development/Stairs/config/application.rb:7:in `<top (required)>'
E:/Projects/development/Stairs/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
我第一次遇到与Nokogiri相同的问题,我使用这个解决方案解决了:Nokogiri 使用Juloi Elixir的解决方案加载错误并从本地副本安装Nokogiri.
但我不想做这个foreach宝石!看起来ruby正在使用./或./2.2路径搜索gem,而gem则存储在./2.2.0路径中.这是可配置的吗?我该如何解决这个问题?
Note: Gemfile contains gem 'bcrypt', '~> 3.1.10'
Run Code Online (Sandbox Code Playgroud)
谢谢!
我一直在开发这个RoR 5.1应用程序,现在我需要添加一个新的迁移:
class AddActiveFlagToParameters < ActiveRecord::Migration[5.1]
def change
add_column :parameters, :is_active, :boolean, :default => true
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试运行迁移时,rails会引发错误:
NoMethodError:ActiveSupport的未定义方法`halt_callback_chains_on_return_false =':模块
阅读,我终于解决了这个问题,升级到Rails 5.2(gem activesupport 5.2.0)并在文件config/initializers/new_framework_defaults.rb中注释掉这一行.
但这听起来像是一个短期解决方案.
这是从哪里来的?我怎样才能安全地处理这个问题?
实际上,这是一个配置问题.spec/spec_helper.rd指向'test'环境.我将其更改为'development'以使其引用config/environments/development.rb
最好的问候
弗雷德
我是RoR的新手,并遵循Michael Hartl的RoR 3.2教程.
在执行第一次测试时(第3.2.1章),RSpec从这一次开始返回一百个错误(并且所有错误都看起来相同或多或少):
/home/fred/.rvm/gems/ruby-1.9.3-p0@ODQ/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in
`resolve_hash_connection': database configuration does not specify
adapter (ActiveRecord::AdapterNotSpecified)
Run Code Online (Sandbox Code Playgroud)
我的DEV数据库是PostgreSQL,看起来工作正常(迁移工作正常).
有人可以帮我理解什么是错的并解决它吗?
谢谢.
的Gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.1'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'postgres-pr'
gem 'pg'
# gem for test scripts
group :development, :test do
gem 'rspec-rails'
end
group :test do
gem 'capybara', '1.1.2'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> …Run Code Online (Sandbox Code Playgroud) 我正在从Michael Hartl的书中学习Ruby on Rails.我非常喜欢这种写作,结构清晰.不过,我对Rails 3.0和Rails 3.2版本之间的第3.3章差异有疑问:
PagesController成为StaticPagesController@Title 不再在控制器中初始化,而是在每个页面中@Title变量是通过"提供"的功能初始化,并且通过"产量"函数,而不是简单地插入用于<%= @title %>是出于培训原因,还是RoR开发的最新最佳实践?
我需要将特定的 Postgres 序列分配给表的 ID 字段。在模型中,我尝试定义以下对 Posgres 没有影响的设置:
类 MyObject < ActiveRecord::Base
self.sequence_name = "global_seq"
通常,ActiveRecord 迁移中的表定义以
create_table "objects", id: :serial, force: :cascade do |t|
Run Code Online (Sandbox Code Playgroud)
它生成列默认值的 Postgres 定义为
default nextval('objects_id_seq'::regclass)
Run Code Online (Sandbox Code Playgroud)
如何在迁移中指定 nextval() 函数应该依赖于另一个序列?
postgresql activerecord ruby-on-rails rails-migrations rails-activerecord
我在计算机上的RoR应用程序上运行了两个版本:一个用于演示(稳定状态,RoR 4.0),另一个用于开发(RoR 4.2).可以使用http:// localhost:3000访问这两个版本.
但我注意到一个恼人的区别:演示版可以从网络上的另一台计算机访问.Dev版本不能.当Dev版本稳定并成为Demo时,这将是一个很大的麻烦.我的客户希望通过wlan在他自己的笔记本电脑上进行测试.
是否有新实施的"防火墙"功能?这是我的宝石之一吗?
如果有人能向我解释这种改变的行为,我会很高兴的!
对于这两种环境,服务器都是Webrick WEBrick 1.3.1.这是我的宝石文件:
开发(无法从另一台计算机访问)
source 'https://rubygems.org'
ruby '2.2.0'
gem 'rails', '~> 4.2.0'
gem 'bootstrap-sass', '~> 3.3.3'
gem 'sass-rails', '~> 5.0.1'
gem 'coffee-rails', '~> 4.1.0'
gem 'uglifier', '~> 2.7'
gem 'bcrypt', '~> 3.1.10'
gem 'jquery-rails', '~> 4.0.3'
gem 'turbolinks', '2.5.3'
gem 'jbuilder', '~> 2.2.6'
gem 'bootstrap-datepicker-rails', '~> 1.3.1'
gem 'will_paginate', '~> 3.0.7'
gem 'bootstrap-will_paginate', '~> 0.0.10'
gem 'selenium-webdriver', '~> 2.44.0'
gem 'sequenced', '~> 2.0.0'
gem 'annotate', '~> 2.6.5'
gem 'rspec-rails', '~> 3.2.0' …Run Code Online (Sandbox Code Playgroud) 我在Ruby on Rails 5.2上开发.为了管理翻译,我希望允许用户选择与他当前语言不同的语言.应用程序的已配置语言列表是
all_languages = I18n.config.available_locales
Run Code Online (Sandbox Code Playgroud)
all_languages是一个数组.puts all_languages收益:
en fr de it
Run Code Online (Sandbox Code Playgroud)
用户语言在users表中定义.方法返回当前用户的语言
user_language = current_user.language
Run Code Online (Sandbox Code Playgroud)
user_language是一个String.puts user_language收益:
en
Run Code Online (Sandbox Code Playgroud)
我尝试将delete(obj)方法应用于数组,但这不会改变数组:
all_languages.delete(user_language)
Run Code Online (Sandbox Code Playgroud)
我尝试只处理数组,但它不会改变语言数组:
remove_language = Array.new
remove_language << user_language
Run Code Online (Sandbox Code Playgroud)
puts remove_language 收益:
en
Run Code Online (Sandbox Code Playgroud)
puts all_languages - remove_language 收益:
en fr de it
Run Code Online (Sandbox Code Playgroud)
应删除en语言的地方.我不明白为什么它仍然在列表中!
在我的RoR 4.2应用程序中,所有页面都提供:标题,用于HTML标头<TITLE>标记.动态页面还提供:page_heading内容,它显示在我的应用程序页眉布局中.
为了保持一致的外观,我希望标题也显示在静态页面的应用程序页眉布局中,即:不提供page_heading时.
这是展示视图的开始代码:
<% provide(:title, 'Managing business rules') %>
<% content_for :page_heading do %>
<h1>Business Rule: <%= @business_rule.name %></h1>
<% end %>
----
Run Code Online (Sandbox Code Playgroud)
以下是_header.html.erb应用程序布局中嵌入的代码:
<h1> <%= yield(:page_heading.empty? ? :title : :page_heading) %> </h1>
Run Code Online (Sandbox Code Playgroud)
因此,对于静态页面:标题显示在IceWeasel标题栏中,并且在应用程序标题中也是如此,这是正确的.
但是,对于动态页面:标题显示在IceWeasel标题栏中,也显示在应用程序标题中,其中:page_heading是预期的.
符号上的条件:page_heading.empty?不起作用.
如何正确指定此条件并将预期符号提供给yield函数?
谢谢.
我的应用程序管理文档的层次结构。每个文档都有一个层次结构索引,该索引仅在创建时计算。文件document.rb开始于
class BusinessRule < ActiveRecord::Base
### before filter
before_create :set_hierarchy
Run Code Online (Sandbox Code Playgroud)
并根据父级和兄弟级计算层次结构,以便在父级 self.hierarchy = last_one.next范围内进行评估。
现在,我添加了版本管理功能。由于在控制器中添加了new_version方法,因此使用该@document.dup方法可以复制文档,然后将其保存:层次结构应该保持不变,并且仅需要增加版本号。
精细。但是before_create过滤器是由模型中的save操作触发的,并且层次结构增加了,这不符合要求。
在控制器中执行new_version操作时,如何防止模型中的before过滤器触发?
ruby-on-rails ×10
ruby ×2
activerecord ×1
arrays ×1
ip ×1
msys2 ×1
postgresql ×1
rspec ×1
rubygems ×1
webrick ×1
windows ×1