小编Lin*_*der的帖子

MySQL将UTF-8更改为ASCII-8BIT

我有这种情况.

电影名称:

$ title = "La leyenda de Osaín"
Run Code Online (Sandbox Code Playgroud)

使用此编码:

$ title.encoding.name
>> UTF-8
Run Code Online (Sandbox Code Playgroud)

然后我将其保存到数据库中.

$ movie = Movie.create!(:title => title)
Run Code Online (Sandbox Code Playgroud)

然后我试着看电影.

$ Movie.find(movie.id).title.encoding.name
>> "ASCII-8BIT"

$ Movie.find(movie.id).title
>> "La leyenda de Osa\xC3\xADn"
Run Code Online (Sandbox Code Playgroud)

所有其他电影的作品不包含像í和的特殊字符û.

这是我的database.yaml文件:

development:
  adapter: mysql
  database: development
  username: linus
  password: my_password
  socket: /tmp/mysql.sock
  encoding: UTF8
Run Code Online (Sandbox Code Playgroud)

我在使用时获得了正确的数据forced_encoding.

$ Movie.find(movie.id).title.force_encoding("UTF-8")
>> "La leyenda de Osaín"
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails 3.0.5.rc1和MySQL 14.14.

谁知道问题可能是什么?

mysql ruby-on-rails utf8-decode

6
推荐指数
1
解决办法
2083
查看次数

我的缓存正在刷新,为什么?

我的应用程序缓存被刷新(页面,动作和片段缓存)时遇到了一些问题.

看起来(根据memcached IRC和日志文件),即使缓存未满,也会经常刷新缓存.

我正在使用:

这是stats使用telnet 运行时打印的数据.

expires_in将数据保存到缓存时,我没有使用任何选项.相反,我每天晚上都会使用扫地机手动刷新缓存.

任何人都知道为什么会这样?

memcached ruby-on-rails ruby-on-rails-3.1

6
推荐指数
1
解决办法
557
查看次数

Mongodb,mongoid Rails 3.1.*Active记录错误

3-4个月后,当我回到RoR的另一个项目时,使用Mongoid.我被困在这个奇怪的问题上.正如我一直关注Mongoid记录的那样.如此生成mongoid.yml,删除database.yml.并改变了

#require 'rails/all'
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"
require "sprockets/railtie" # Uncomment this line for Rails 3.1+
Run Code Online (Sandbox Code Playgroud)

config/application.rb.

我仍然面临着这个问题.用,启动服务器.

configuration.rb:85:in `method_missing': undefined method `active_record' for #<Rails::Application::Configuration:0x9441fd4> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

哎呀,我不得不注释掉
config.active_record.mass_assignment_sanitizer = :strict ,并
config.active_record.auto_explain_threshold_in_seconds = 0.5config/environments/development.rb.

activerecord mongodb mongoid ruby-on-rails-3.1

6
推荐指数
1
解决办法
1466
查看次数

nil的未定义方法`parent':NilClass

我使用Rails 3.0.2得到了这个奇怪的错误.

ActionView::Template::Error (undefined method `parent' for nil:NilClass):
app/controllers/channels_controller.rb:19:in `index'
Run Code Online (Sandbox Code Playgroud)

这是控制器,而行19respond_with(@channels)块.

我从哪里开始搜索错误?

class ChannelsController < ApplicationController
  before_filter :set_default_client
  respond_to :html, :xml

  def index
    if params[:cache_set]
      @channels = Channel.active.find_all_by_id(params[:cache_set])
    else
      @channels = Channel.active.find_all_by_id(cookies[:channels].split(','))
    end

    respond_with(@channels)
  end
end
Run Code Online (Sandbox Code Playgroud)

这是完整的错误:

ActionView::Template::Error (undefined method `parent' for nil:NilClass):
  app/controllers/channels_controller.rb:19:in `index'

Rendered /Users/linus/.rvm/gems/ruby-1.8.7-p330/gems/actionpack-3.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.3ms)
Rendered /Users/linus/.rvm/gems/ruby-1.8.7-p330/gems/actionpack-3.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (19.8ms)
Rendered /Users/linus/.rvm/gems/ruby-1.8.7-p330/gems/actionpack-3.0.2/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (28.6ms)
Run Code Online (Sandbox Code Playgroud)

我正在使用Ruby 1.8.7和Rails 3.0.2.我也是,为了以防万一,尝试了Rails 3.0.7和3.0.0.

ruby ruby-on-rails ruby-on-rails-3

5
推荐指数
2
解决办法
2245
查看次数

检查Web文件是否存在,无需下载?

是否有可能检查文件是否存在,而不实际下载?

我有这个大(~ 40mb)的文件,例如:

http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm

这与ruby 并不严格相关,但如果发件人可以设置内容长度则会很好.

RestClient.get "http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm", 
               headers: {"Content-Length" => 100}
Run Code Online (Sandbox Code Playgroud)

ruby

5
推荐指数
1
解决办法
847
查看次数

ActionView :: MissingTemplate:缺少模板

当谷歌机器人试图访问我的一个控制器时,我收到此错误消息.

ActionView::MissingTemplate: Missing template channels/show, application/show with {:locale=>[:"sv-SE", :en], :formats=>["*/*;q=0.9"], :handlers=>[:erb, :builder, :haml]}. Searched in: * "/opt/www/app/releases/20120228181534/app/views" * "/opt/www/app/shared/bundle/ruby/1.9.1/gems/kaminari-0.13.0/app/views"
Run Code Online (Sandbox Code Playgroud)

问题是我无法重现它.错误发生在上周的121次(根据airbrake).

是回溯.

第18行是我的应用程序中唯一提到的行,它是super此代码的一部分

def render(options = {}, extra_options = {}, &block)
  if request.headers['X-PJAX'] or params[:no_layout] == "true" or params[:_pjax] 
    options[:layout] = false
  end
  super(options, extra_options, &block)
end
Run Code Online (Sandbox Code Playgroud)

控制器方法channels#show如下所示

def show
  @channel   = # ...
  @today     = # ...
  @yesterday = # ...
  @tomorrow  = # ...
end
Run Code Online (Sandbox Code Playgroud)

访问引发谷歌机器人错误的网址不会给我带来错误.

唯一失败的网址是包含特殊字符的网址{"action"=>"show", "id"=>"25-jönköping", "controller"=>"channels"}.该ORIGINAL_FULLPATH …

ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
4372
查看次数

主动管理员不接受我的路线

我在运行我的应用程序时遇到了一些问题.

1.

我希望能够将活动管理员指向http://admin.lvh.me:3000/ 我尝试使用此代码,但它只显示索引页面.

# config/routes.rb
scope :admin, constraints: { subdomain: "admin" } do
  ActiveAdmin.routes(self)
  devise_for :admin_users, ActiveAdmin::Devise.config.merge(path: "/")
end

# config/initializers/active_admin.rb
config.default_namespace = :admin
Run Code Online (Sandbox Code Playgroud)

唯一有效的网址是http://admin.lvh.me:3000/admin 有可能避免/admin吗?

2.

我的申请中的每个考试都有很多部分.我想使用此代码为每个考试添加一个部件按钮.

# app/admin/exams.rb
ActiveAdmin.register Exam do
  # ...
  index do
    column :actions do |exam|
      link_to "Part", admin_exam_parts_path(exam)
    end

    default_actions
  end
  # ...
end
Run Code Online (Sandbox Code Playgroud)

问题是admin_exam_parts_path不存在.

# config/routes.rb
scope :admin, constraints: { subdomain: "admin" } do
  resources :exams do
    resources :parts
  end

  ActiveAdmin.routes(self)
  devise_for :admin_users, ActiveAdmin::Devise.config.merge(path: "/")
end …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise activeadmin

5
推荐指数
1
解决办法
929
查看次数

ApplicationController的未定义方法`caches_action':Class

我正在尝试升级到rails 4 beta 1,但我有点问题.

简而言之,这就是我的应用程序控制器的样子.

class ApplicationController < ApplicationController
  caches_action :method
end
Run Code Online (Sandbox Code Playgroud)

caches_action 在Rails 4中移出它自己的宝石,所以包括gem应该解决问题.

gem "actionpack-action_caching", github: "rails/actionpack-action_caching"
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的请求规范或在浏览器中访问应用程序时,我收到此错误.

app/controllers/application_controller.rb:3:in `<class:ApplicationController>': undefined method `caches_action' for ApplicationController:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

这是为什么?

  • Rails 4.0.0.beta1
  • Ruby 2.0.0
  • Rspec 2.13.1

ruby ruby-on-rails ruby-2.0 ruby-on-rails-4

5
推荐指数
2
解决办法
3623
查看次数

Rails 4.1.0.beta1升级失败

我最近尝试安装rails 4.1.0.beta1,但rails s导致以下错误.

[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/core_ext/module/aliasing.rb:32:in `alias_method': undefined method `graft' for class `ActiveRecord::Associations::JoinDependency' (NameError)
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/core_ext/module/aliasing.rb:32:in `alias_method_chain'
[RVM]/gems/ruby-2.0.0-p247/gems/polyamorous-0.6.4/lib/polyamorous/join_dependency.rb:7:in `block in included'
[RVM]/gems/ruby-2.0.0-p247/gems/polyamorous-0.6.4/lib/polyamorous/join_dependency.rb:5:in `class_eval'
[RVM]/gems/ruby-2.0.0-p247/gems/polyamorous-0.6.4/lib/polyamorous/join_dependency.rb:5:in `included'
[RVM]/gems/ruby-2.0.0-p247/gems/polyamorous-0.6.4/lib/polyamorous.rb:20:in `include'
[RVM]/gems/ruby-2.0.0-p247/gems/polyamorous-0.6.4/lib/polyamorous.rb:20:in `<top (required)>'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `block in require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:232:in `load_dependency'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/ransack-1.1.0/lib/ransack/adapters/active_record/3.1/context.rb:3:in `<top (required)>'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `block in require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:232:in `load_dependency'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/ransack-1.1.0/lib/ransack/adapters/active_record/3.2/context.rb:2:in `<top (required)>'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `block in require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:232:in `load_dependency'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/ransack-1.1.0/lib/ransack/adapters/active_record/context.rb:2:in `<top (required)>'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `block in require'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:232:in `load_dependency'
[RVM]/gems/ruby-2.0.0-p247/gems/activesupport-4.1.0.beta1/lib/active_support/dependencies.rb:247:in `require'
[RVM]/gems/ruby-2.0.0-p247/gems/ransack-1.1.0/lib/ransack/adapters/active_record.rb:12:in …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
1523
查看次数

使用rspec而不是Rails的“无法自动加载常量”

我有这个文件要测试。

app/workers/station/http.rb

module Worker
  module Station
    class HTTP
      # ...
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的规格文件。

spec/workers/station/http_spec.rb

describe Worker::Station::HTTP do
  it "should do something"  do
  end 
end
Run Code Online (Sandbox Code Playgroud)

现在的问题是,使用rspec运行spec文件时出现以下错误。

rspec spec/workers/station/http_spec.rb

/Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:464:in `load_missing_constant': Unable to autoload constant Station::HTTP, expected app/workers/station/http.rb to define it (LoadError)
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:184:in `const_missing'
  from spec/workers/station/http_spec.rb:3:in `<top (required)>'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:223:in `load'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:223:in `block in load'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:214:in `load_dependency'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:223:in `load'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `each'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `load_spec_files'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/command_line.rb:22:in `run'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:80:in `run'
  from …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails

5
推荐指数
1
解决办法
1485
查看次数