我找到了一些关于这个问题的答案。从Docker容器加载Web时出现此错误。
我尝试了这里的建议
Helper Devise: could not find the `Warden::Proxy` instance on request environment但没有成功
这是我的Dockerfile
FROM ruby:2.4.0
ENV PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y rake less rsync locales build-essential chrpath libpq-dev libxml2-dev libxslt1-dev libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev qt5-default libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools gstreamer1.0-x nodejs yarn pdftk && \
curl -L -O https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 && \
tar xvjf $PHANTOM_JS.tar.bz2 && \
mv $PHANTOM_JS /usr/local/share && \
ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin && \
mkdir -p /root/.phantomjs/2.1.1/x86_64-linux/bin && \
ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /root/.phantomjs/2.1.1/x86_64-linux/bin/phantomjs && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN sed -i "s/^#\ \+\(en_US.UTF-8\)/\1/" /etc/locale.gen
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV LANGUAGE en_US:en
ENV RAILS_ENV=development
ENV BUNDLE_PATH /box
RUN mkdir /app
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY package.json ./
RUN yarn install
COPY . .
CMD puma -C config/puma.rb
当我创建数据库的图像(postgresql)和rails服务器的图像时,我有一个docker composer文件。
当所有容器都已加载时,我会转到我的浏览器,然后在终端中找到它:
故障安全响应期间出错:Devise找不到 您的请求环境中的
Warden::Proxy
实例。确保这一点 你的应用程序正在按预期加载Devise和Warden 中间件堆栈中存在Warden::Manager
中间件。如果 你在一个测试中看到了这一点,确保你的测试是 要么执行Rails中间件堆栈,要么执行测试 使用Devise::Test::ControllerHelpers
模块注入request.env['warden']
对象。
注意:我在本地和Docker中使用Ruby 2.4.0